Как правильно составить список элементов из массива после сращивания - PullRequest
2 голосов
/ 02 июня 2011

У меня есть пример кода:

var array = [];
array[0] = {id:0};
array[1] = {id:1};
array[2] = {id:2};

Теперь массив выглядит как

[Object{id=0}, Object{id=1}, Object{id=2}] 

Я использую соединение:

array.splice(0,1);

И у нас есть:

[Object{id=1}, Object{id=2}]

Когда я пытаюсь for или for ... in длина будет только 2, и я не могу повторить это обычным способом.Результат цикла:

undefined
Object{id:1}  

В первом случае (когда мы используем for) я понимаю, почему он не работает, но for ... in должен возвращать индексы 1 и 2, а не 0 и 1 ...

Кто-нибудь может мне объяснить, что я делаю не так?

1 Ответ

3 голосов
/ 02 июня 2011

Что вы пробовали? Если я выдаю

var array = [];
array[0] = {id:0};
array[1] = {id:1};
array[2] = {id:2};
array.splice(0,1);
for (var i = 0, len = array.length; i < len; i++)
    console.log(i + ":", array[i]);

двигатель правильно выводит

0: Object { id=1 }
1: Object { id=2 }

(но индексы массива меняются на 0 и 1, возможно, именно это вас смущает; помните, что Array.splice по умолчанию удаляет элемент 0 вперед и сдвигает все оставшиеся элементы вниз).

Обновление: Помимо того, что вы всегда можете получить свойство id отдельных объектов, используя array[i].id, вы можете удалять элементы массива, не сдвигая другие элементы, используя оператор delete , После того, как я заменил array.splice(0,1) на

delete array[0];

вывод показывает

0: undefined
1: Object { id=1 }
2: Object { id=2 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...