Переписать массив в JavaScript - PullRequest
       32

Переписать массив в JavaScript

3 голосов
/ 12 октября 2009

Как мне перезаписать (или сбросить, а затем установить) массив? Похоже, "array = new_array" не работает.

Ответы [ 5 ]

12 голосов
/ 12 октября 2009

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

array = new Array();

Или вы можете использовать литерал пустого массива:

array = [];

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

array.splice(0, array.length);
1 голос
/ 09 августа 2017

Очистка массива

http://2ality.com/2012/12/clear-array.html

let myArray = [ 1, 2, 3, 4];

myArray = [];
myArray.length = 0;
1 голос
/ 12 октября 2009

Это должно работать.

array1 = array2;

Если нет, пожалуйста, предоставьте более подробную информацию.

0 голосов
/ 12 октября 2009

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

sms.original = eval('(' + data + ')');
sms.messages = sms.original;

sms.original становится объектом, а затем sms.messages становится sms.original (я просто хотел, чтобы они имели одинаковое значение). Объекты содержат массив с именем items , который должен оставаться статическим в объекте sms.original , но когда я изменил sms.messages , исходный объект изменился как Что ж. Решение было простым:

sms.original = eval('(' + data + ')');
sms.messages = eval('(' + data + ')');

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

0 голосов
/ 12 октября 2009

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

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

for(var i = 0; i < arr.length; i++) {
   arr[i] = null;
}

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

arr = [];
...