21

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

16

Проблема: Как очистить массив в Python?

Здравствуйте!

Я столкнулся с задачей очистки массива в Python и хотел бы узнать, есть ли способ сделать это, возможно, с использованием метода .remove()?

Допустим, у меня есть такой массив:

A = [1, 2, 3, 4]

Как я могу его очистить? Буду благодарен за советы и примеры кода!

5 ответ(ов)

27

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

A.length = 0;
2

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

A.splice(0, A.length);

Этот метод удаляет элементы из массива, начиная с индекса 0 и удаляя все элементы (размер массива). Это обеспечивает корректное очищение массива вне зависимости от используемого браузера.

1

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

Вопрос заключается в следующем: "Как очистить существующий массив?" Например, для A = [1, 2, 3, 4].

  1. Говорить, что "A = [] — это правильный ответ", неразумно и совершенно неверно. [] == [] — это ложь.

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


Представьте, что ваша мама попросила вас очистить ведро для мусора.

  • Вы не приносите новое ведро, думая, что выполнили ее просьбу.
  • Вместо этого вы просто опустошаете ведро.
  • Вы не заменяете полное ведро на новое пустое и не снимаете ярлык "A" с заполненного ведра, приклеивая его к новому, как в примере A = [1, 2, 3, 4]; A = [];

Очистить объект массива — это проще простого:

A.length = 0;

Таким образом, ведро под "A" будет не только пустым, но и чистым, как новое!


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

    while (A.length > 0) {
        A.pop();
    }
    
  2. Или не нужно ставить левую руку на дно ведра, придерживая его правой рукой сверху, чтобы вытащить содержимое, как в:

    A.splice(0, A.length);
    

Нет, вам сказали просто опустошить его:

A.length = 0;

Этот код — единственный правильный способ очистить содержимое данного массива в JavaScript.

0

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

  1. a = [] - Этот метод оказался на 37% медленнее, чем лучший вариант. Он создает новый массив и присваивает его переменной, потрачивая время на выделение новой памяти.

  2. a.length = 0 - Этот способ был на 89% медленнее. Хотя он и очищает массив, на самом деле он подлежат более медленной обработке на некоторых интерпретаторах JavaScript, поскольку изменяет свойство длины массива.

  3. a.splice(0, a.length) - Этот метод очистки массива показал наихудший результат, будучи на 97% медленнее. Он вызывает функцию splice, что добавляет накладные расходы на вызов функции и манипуляции с массивом.

  4. Цикл while (a.length > 0) { a.pop(); } - Этот метод оказался самым быстрым. Поскольку он поочередно удаляет элементы из конца массива (что является оптимальным для массивов), производительность остается высокой при полной очистке.

В общем, для оптимальной производительности рекомендуется использовать цикл с pop для очистки массивов в JavaScript.

0

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

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

var arr = [1, 2, 3, 4, 5]; // массив от 1 до 5

Просто выполните следующее:

arr.length = 0; // изменить длину

И результат будет:

[] // результат

Это простой способ очистить массив...

Также можно использовать цикл, хотя это и не обязательно, но это еще один способ сделать это:

/* можно использовать arr.pop() или arr.splice(0)
не нужно ничего возвращать, так как основной массив изменяется */

function remove(arr) {
  while(arr.length) {
    arr.shift(); 
  }
}

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

arr.splice(0, arr.length); // []

Таким образом, если в arr 5 элементов, то будет вырезано 5 элементов начиная с 0, что означает, что массив останется пустым.

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

arr = []; // []

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

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

Array.prototype.remove = Array.prototype.remove || function() {
  this.splice(0, this.length);
};

И теперь вы сможете просто вызвать это, чтобы очистить любой массив в вашем JavaScript-приложении:

arr.remove(); // []
Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь