Как очистить весь массив javascript

Работа с массивами в JavaScript

Как очистить весь массив javascript

Статья, в которой рассмотрены различные моменты, связанные с использованием массивов в JavaScript.

Как очистить весь массив javascript

Как удалить элемент массива

Удаление элемента (ов) из массива осуществляется одним из следующих методов:

Как удалить массив

Для того чтобы удалить массив, хранящейся в некоторой переменной, достаточно присвоить ей другое значение.

Как добавить элемент в массив

Для добавления элемента в массив можно воспользоваться одним из следующих методов:

Как вывести массив

Для того чтобы вывести массив в некоторый элемент на веб-странице его предварительно необходимо преобразовать в строку.

Например, вывести содержимое некоторого массива в элемент с id=»array» :

Как создать пустой массив

Создание пустого массива осуществляется следующими конструкциями:

Как очистить массив

Для того чтобы удалить все элементы из некоторого массива можно воспользоваться одним из следующих способов:

Как объединить массивы

Как узнать является ли объект массивом

Для того чтобы узнать какой тип данных содержит переменная можно воспользоваться одной из следующих конструкций:

Как узнать индекс элемента в массиве

Как найти максимальное значение массива

Для того чтобы найти максимальное значение массива можно воспользоваться следующей конструкцией:

Как найти минимальное значение массива

Для того чтобы найти минимальное значение массива можно воспользоваться следующей конструкцией:

Как заполнить массив с помощью метода fill

Метод fill() предназначен для заполнения массива или его части с помощью указанного значения:

Перемешать массив

Для того чтобы перемешать элементы в массиве можно воспользоваться следующей функцией:

Скопировать массив

Для того чтобы скопировать массив используйте следующий код:

Сортировка числового массива по убыванию

Для сортировки числового массива по убыванию можно использовать метод sort() :

Сортировка числового массива по возрастанию

Для сортировки числового массива по возрастанию можно использовать метод sort() :

Как проверить существование элемента в массиве

Сумма значений элементов массива

Определение суммы элементов числового массива:

Как создать двумерный и многомерный массивы в JavaScript

Готовых функций для создания и работы с двумерными и многомерными массивами в JavaScript нет. Их создание осуществляется посредством того, что каждый элемент первоначального массива в свою очередь тоже должен является массивом.

Например, создадим массив 5×5:

Например, создадим массив 3×2:

Например, создадим пустой двумерный массив:

Например, спроектируем функцию arrayTable, предназначенную для создания табличного массива:

Например, создадим трехмерный массив 3×3×3:

Источник

Как очистить массив в JavaScript?

Как я могу очистить это?

Способы очистки существующего массива A :

Способ 1

(это был мой оригинальный ответ на вопрос)

Это также самое быстрое решение.

Этот пример кода показывает проблему, с которой вы можете столкнуться при использовании этого метода:

Способ 2 (как предложено от Мэтью Крамли )

Это очистит существующий массив, установив его длину равным 0. Некоторые утверждают, что это может работать не во всех реализациях JavaScript, но оказывается, что это не так. Это также работает при использовании «строгого режима» в ECMAScript 5, поскольку свойство длины массива является свойством чтения / записи.

Способ 3 (как предложено от Anthony )

Способ 4 (как предложено путем tanguy_k )

Это решение не очень кратко, и это также самое медленное решение, в отличие от более ранних тестов, на которые ссылались в исходном ответе.

Представление

Как указал Диадистис в своем ответе ниже, исходные критерии, которые использовались для определения эффективности четырех методов, описанных выше, были ошибочными. Исходный бенчмарк повторно использовал очищенный массив, поэтому вторая итерация очищала массив, который уже был пустым.

Это была горячая тема и причина многих противоречий. На самом деле есть много правильных ответов, и поскольку этот ответ был помечен как принятый ответ в течение очень долгого времени, я включу все методы здесь. Если вы проголосуете за этот ответ, пожалуйста, подпишите другие ответы, на которые я также ссылался.

Источник

Как очистить массив в JavaScript?

Как я могу удалить это?

ОТВЕТЫ

Ответ 1

Способы очистки существующего массива A :

Метод 1

(это был мой первоначальный ответ на вопрос)

Это также самое быстрое решение.

В этом примере кода показана проблема, с которой вы можете столкнуться при использовании этого метода:

Это очистит существующий массив, установив его длину равным 0. Некоторые утверждают, что это может не работать во всех реализациях JavaScript, но оказывается, что это не так. Он также работает при использовании «строгого режима» в ECMAScript 5, потому что свойство length массива является свойством чтения/записи.

Метод 3 (как предложил Anthony)

Метод 4 (как предложил tanguy_k)

Это решение не очень кратким, и оно также является самым медленным решением, в отличие от предыдущих эталонных тестов, упомянутых в исходном ответе.

Производительность

Из всех методов очистки существующего массива методы 2 и 3 очень похожи по производительности и намного быстрее, чем метод 4. См. этот тест.

Как указано Diadistis в их ответе ниже, исходные критерии, которые были использованы для определить эффективность четырех описанных выше методов были ошибочными. Исходный тест повторно использовал очищенный массив, поэтому вторая итерация очищала массив, который был уже пуст.

Следующий критерий устраняет этот недостаток: http://jsben.ch/#/hyj65. Он ясно показывает, что методы # 2 (свойство длины) и # 3 (сращивание) являются самыми быстрыми (не считая метод # 1, который не меняет исходный массив).

Это была горячая тема и причина многих споров. На самом деле есть много правильных ответов, и поскольку этот ответ был отмечен как принятый ответ в течение очень долгого времени, я буду включать все методы здесь. Если вы проголосуете за этот ответ, пожалуйста, подтвердите другие ответы, на которые я ссылался.

Ответ 2

Если вам нужно сохранить исходный массив, потому что у вас есть другие ссылки на него, которые также должны быть обновлены, вы можете очистить его, не создавая новый массив, установив его длину в ноль:

Ответ 3

Здесь самая быстрая рабочая реализация при сохранении одного и того же массива («изменчивый»):

Карта FYI определяет clear() поэтому было бы логично иметь clear() для массива.

Или простая функция:

FYI это не может быть упрощено while (array.pop()) : тесты потерпят неудачу.

И тесты, которые идут с ним:

Ответ 4

Более дружественное к браузеру и более оптимальное решение будет заключаться в использовании метода splice для удаления содержимого массива A, как показано ниже:

Ответ 5

Ответы, которые имеют не менее 2739 upvotes, являются вводящими в заблуждение и неверными.

Высказывание » A = [] является ответом» невежественно и абсолютно неверно. [] == [] false.

Это связано с тем, что эти два массива представляют собой два отдельных отдельных объекта с их собственными двумя идентичностями, занимая свое собственное пространство в цифровом мире, каждый по отдельности.

Скажем, ваша мать просит вас очистить корзину.

Таким образом, банкнота под «А» не только пуста, но и чиста, как новая!

Кроме того, вы не обязаны удалять мусор вручную, пока пустая пустая. Вас попросили полностью опорожнить существующий, за один ход, чтобы не забрать мусор, пока баннер не станет пустым, как в:

Не оставляйте левую руку на дне корзины, удерживая ее справа вверху, чтобы вытащить ее содержимое, как в:

Нет, вас попросили опорожнить его:

Это единственный код, который правильно опустошает содержимое данного массива JavaScript.

Ответ 6

Ответ 7

Вы можете добавить это в свой файл JavaScript, чтобы ваши «массивы» были очищены:

Затем вы можете использовать его следующим образом:

Или, если вы хотите быть уверенным, что вы ничего не уничтожаете:

Многие думают, что вы не должны изменять собственные объекты (например, Array), и я склонен согласиться. Будьте осторожны при принятии решения о том, как с этим справиться.

Ответ 8

И назовите его: array.clear();

Ответ 9

Существует много путаницы и дезинформации относительно времени, поп/сдвиг, как в ответах, так и в комментариях. Решение while/pop имеет (как и ожидалось) худшую производительность. Что на самом деле происходит, так это то, что установка выполняется только один раз для каждого образца, который запускает фрагмент в цикле. например:

Я создал новый тест, который работает правильно:

Ответ 10

Если вы заинтересованы в распределении памяти, вы можете сравнить каждый подход, используя что-то вроде this jsfiddle в сочетании с вкладкой временной шкалы hrome dev tools. Вы захотите использовать значок корзины внизу, чтобы заставить сбор мусора после «очистки» массива. Это даст вам более конкретный ответ для браузера по вашему выбору. Многие ответы здесь старые, и я не буду опираться на них, а скорее проверю, как в ответе @tanguy_k выше.

(для входа в вышеупомянутую вкладку вы можете проверить здесь)

Stackoverflow заставляет меня скопировать jsfiddle, вот он:

И вы должны принять во внимание, что это может зависеть от типа элементов массива, поскольку javascript управляет строками иначе, чем другие примитивные типы, не говоря уже о массивах объектов. Тип может повлиять на то, что происходит.

Ответ 11

Я просто сделал это по некоторому коду, над которым я работаю. Он очистил массив.

Ответ 12

Если вы используете

Затем вы назначаете новую ссылку массива на a, если ссылка в уже назначена на любую другую переменную, то она также не будет опустошать этот массив, и, следовательно, сборщик мусора не будет собирать эту память.

Вместо этих двух решений лучше.

Как и в предыдущем ответе kenshou.html, второй метод выполняется быстрее.

Ответ 13

Используйте измененную версию Jan первоначального предложения:

Ответ 14

Вы можете легко создать функцию, которая сделает это для вас, изменить длину или даже добавить ее в собственный массив как функцию remove() для повторного использования.

Представьте, что у вас есть этот массив:

Хорошо, просто запустите это:

простой способ опорожнения массива.

Также использовать цикл, который не нужен, а просто другой способ сделать это:

Есть также сложный способ, о котором вы можете думать, например, что-то вроде этого:

Поэтому, если arr имеет 5 элементов, он будет сращивать 5 элементов из 0, что означает, что в массиве ничего не останется.

Также другие способы, например, просто переназначить массив:

Если вы посмотрите на функции массива, есть много других способов сделать это, но наиболее рекомендуемым может быть изменение длины.

Как я уже сказал, вы также можете прототипировать remove(), поскольку это ответ на ваш вопрос. вы можете просто выбрать один из вышеперечисленных методов и прототипировать его в объект Array в JavaScript, например:

и вы можете просто вызвать его так, чтобы очистить любой массив в вашем приложении javascript:

Ответ 15

Просто очистить массив

Ответ 16

Если вы используете константы, тогда у вас нет выбора:

Вы не можете повторить:

Вы можете обрезать только:

Ответ 17

Как очистить весь массив javascript

Чтобы очистить текущую ячейку памяти массива, используйте: ‘myArray.length = 0’ или ‘myArray.pop() UN-till its length is 0’

slice() : с помощью функции среза мы получаем мелкую копию элементов из исходного массива, с новым адресом памяти, Так что любая модификация на cloneArr не повлияет на фактический исходный массив.

Ответ 18

Я удивлен, что никто не предложил это еще:

Это дает массив в совершенно другом состоянии от других решений. В каком-то смысле массив был «опустошен»:

Вы можете создать эквивалентный массив с [. ] или Array(4)

Ответ 19

Вы можете использовать:

Ответ 20

Сравнение поведения между циклами arr = [] vs a arr.pop() :

Ответ 21

Используйте ниже, если вам нужно удалить Angular 2+ FormArray.

Источник

Методы массивов

Массивы предоставляют множество методов. Чтобы было проще, в этой главе они разбиты на группы.

Добавление/удаление элементов

Мы уже знаем методы, которые добавляют и удаляют элементы из начала или конца:

splice

Как удалить элемент из массива?

Так как массивы – это объекты, то можно попробовать delete :

Поэтому для этого нужно использовать специальные методы.

Метод arr.splice(str) – это универсальный «швейцарский нож» для работы с массивами. Умеет всё: добавлять, удалять и заменять элементы.

Этот метод проще всего понять, рассмотрев примеры.

В следующем примере мы удалим 3 элемента и заменим их двумя другими.

Здесь видно, что splice возвращает массив из удалённых элементов:

Метод splice также может вставлять элементы без удаления, для этого достаточно установить deleteCount в 0 :

В этом и в других методах массива допускается использование отрицательного индекса. Он позволяет начать отсчёт элементов с конца, как тут:

slice

Он возвращает новый массив, в который копирует элементы, начиная с индекса start и до end (не включая end ). Оба индекса start и end могут быть отрицательными. В таком случае отсчёт будет осуществляться с конца массива.

concat

Метод arr.concat создаёт новый массив, в который копирует данные из других массивов и дополнительные значения.

Он принимает любое количество аргументов, которые могут быть как массивами, так и простыми значениями.

Если аргумент argN – массив, то все его элементы копируются. Иначе скопируется сам аргумент.

Обычно он просто копирует элементы из массивов. Другие объекты, даже если они выглядят как массивы, добавляются как есть:

Для корректной обработки в объекте должны быть числовые свойства и length :

Перебор: forEach

Метод arr.forEach позволяет запускать функцию для каждого элемента массива.

Например, этот код выведет на экран каждый элемент массива:

А этот вдобавок расскажет и о своей позиции в массиве:

Результат функции (если она вообще что-то возвращает) отбрасывается и игнорируется.

Поиск в массиве

Далее рассмотрим методы, которые помогут найти что-нибудь в массиве.

indexOf/lastIndexOf и includes

Методы arr.indexOf, arr.lastIndexOf и arr.includes имеют одинаковый синтаксис и делают по сути то же самое, что и их строковые аналоги, но работают с элементами вместо символов:

Кроме того, очень незначительным отличием includes является то, что он правильно обрабатывает NaN в отличие от indexOf/lastIndexOf :

find и findIndex

Представьте, что у нас есть массив объектов. Как нам найти объект с определённым условием?

Здесь пригодится метод arr.find.

Его синтаксис таков:

Функция вызывается по очереди для каждого элемента массива:

В реальной жизни массивы объектов – обычное дело, поэтому метод find крайне полезен.

filter

На тот случай, если найденных элементов может быть много, предусмотрен метод arr.filter(fn).

Преобразование массива

Перейдём к методам преобразования и упорядочения массива.

Метод arr.map является одним из наиболее полезных и часто используемых.

Он вызывает функцию для каждого элемента массива и возвращает массив результатов выполнения этой функции.

Например, здесь мы преобразуем каждый элемент в его длину:

sort(fn)

Вызов arr.sort() сортирует массив на месте, меняя в нём порядок элементов.

Не заметили ничего странного в этом примере?

По умолчанию элементы сортируются как строки.

Функция должна для пары значений возвращать:

Например, для сортировки чисел:

Теперь всё работает как надо.

Давайте возьмём паузу и подумаем, что же происходит. Упомянутый ранее массив arr может быть массивом чего угодно, верно? Он может содержать числа, строки, объекты или что-то ещё. У нас есть набор каких-то элементов. Чтобы отсортировать его, нам нужна функция, определяющая порядок, которая знает, как сравнивать его элементы. По умолчанию элементы сортируются как строки.

Кстати, если мы когда-нибудь захотим узнать, какие элементы сравниваются – ничто не мешает нам вывести их на экран:

В процессе работы алгоритм может сравнивать элемент с другими по нескольку раз, но он старается сделать как можно меньше сравнений.

На самом деле от функции сравнения требуется любое положительное число, чтобы сказать «больше», и отрицательное число, чтобы сказать «меньше».

Это позволяет писать более короткие функции:

Помните стрелочные функции? Можно использовать их здесь для того, чтобы сортировка выглядела более аккуратной:

Будет работать точно так же, как и более длинная версия выше.

reverse

Метод arr.reverse меняет порядок элементов в arr на обратный.

Он также возвращает массив arr с изменённым порядком элементов.

split и join

В примере ниже таким разделителем является строка из запятой и пробела.

У метода split есть необязательный второй числовой аргумент – ограничение на количество элементов в массиве. Если их больше, чем указано, то остаток массива будет отброшен. На практике это редко используется:

Вызов split(s) с пустым аргументом s разбил бы строку на массив букв:

reduce/reduceRight

Методы arr.reduce и arr.reduceRight похожи на методы выше, но они немного сложнее. Они используются для вычисления какого-нибудь единого значения на основе всего массива.

Функция применяется по очереди ко всем элементам массива и «переносит» свой результат на следующий вызов.

При вызове функции результат её вызова на предыдущем элементе массива передаётся как первый аргумент.

Этот метод проще всего понять на примере.

Тут мы получим сумму всех элементов массива всего одной строкой:

Давайте детальнее разберём, как он работает.

Поток вычислений получается такой:

В виде таблицы, где каждая строка –- вызов функции на очередном элементе массива:

sumcurrentresult
первый вызов011
второй вызов123
третий вызов336
четвёртый вызов6410
пятый вызов10515

Здесь отчётливо видно, как результат предыдущего вызова передаётся в первый аргумент следующего.

Мы также можем опустить начальное значение:

Результат – точно такой же! Это потому, что при отсутствии initial в качестве первого значения берётся первый элемент массива, а перебор стартует со второго.

Таблица вычислений будет такая же за вычетом первой строки.

Но такое использование требует крайней осторожности. Если массив пуст, то вызов reduce без начального значения выдаст ошибку.

Поэтому рекомендуется всегда указывать начальное значение.

Метод arr.reduceRight работает аналогично, но проходит по массиву справа налево.

Array.isArray

Массивы не образуют отдельный тип языка. Они основаны на объектах.

Поэтому typeof не может отличить простой объект от массива:

Большинство методов поддерживают «thisArg»

Этот параметр не объяснялся выше, так как очень редко используется, но для наиболее полного понимания темы мы обязаны его рассмотреть.

Вот полный синтаксис этих методов:

Например, вот тут мы используем метод объекта army как фильтр, и thisArg передаёт ему контекст:

Итого

Шпаргалка по методам массива:

Для добавления/удаления элементов:

Для поиска среди элементов:

Для перебора элементов:

Для преобразования массива:

Изученных нами методов достаточно в 99% случаев, но существуют и другие.

Полный список есть в справочнике MDN.

На первый взгляд может показаться, что существует очень много разных методов, которые довольно сложно запомнить. Но это гораздо проще, чем кажется.

Внимательно изучите шпаргалку, представленную выше, а затем, чтобы попрактиковаться, решите задачи, предложенные в данной главе. Так вы получите необходимый опыт в правильном использовании методов массива.

Всякий раз, когда вам будет необходимо что-то сделать с массивом, а вы не знаете, как это сделать – приходите сюда, смотрите на таблицу и ищите правильный метод. Примеры помогут вам всё сделать правильно, и вскоре вы быстро запомните методы без особых усилий.

Задачи

Переведите текст вида border-left-width в borderLeftWidth

То есть дефисы удаляются, а все слова после них получают заглавную букву.

Источник

Русские Блоги

Три способа очистить массив в JavaScript

Способ 1, сращивание

Способ 2, длина 0

Этот метод очень интересен. В других языках, таких как Java, длина массива доступна только для чтения и не может быть назначена. в качестве

Об ошибках будет сообщено в Java, и компиляция не удастся.

Но в JS массив очищается, например

Текущие массивы в прототипеclear Метод и массив в библиотеке mootoolsempty Метод использует этот метод для очистки массива.

Способ 3, значение []

Ext библиотека Ext.CompositeElementLite классclear Метод использует этот метод для очистки.

Многие думают, что режим 2 более эффективен, потому что он только переназначает длину, а режим 3 воссоздает объект. После тестирования это именно высокая эффективность режима 3. Тестовый код:

IE6IE7IE8IE9FirefoxSafariChrome
a.length=09429141431
a=[]0000000

Вышеуказанные результаты можно увидеть: Метод 3 быстрее и эффективнее.

Исходя из результатов теста, если другие атрибуты исходного массива не сохраняются, рекомендуется использовать Ext.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *