У меня есть список с функцией наблюдателя:
var names = ['joe', 'bob', 'loic'];
Object.observe(names, function(changes){
changes.forEach(function(change) {
console.log(change.type, change.name)
});
console.log("names",names);
});
console.log("######## del bob");
names.splice(1,1);// output is "update 1 - delete 2", why?
console.log("names", names) // but "bob" is the one deleted in the list
Удаленный индекс в соответствии с объектом изменения равен 2, но я удалил индекс 1, и в списке фактически удален индекс 1. Ты знаешь почему?
Это потому, что индекс 1 обновляется, чтобы получить значение индекса 2, а индекс 2 удаляется? Есть ли способ получить фактический индекс удаленного элемента?
delete names[1]
, вы бы получили одно сообщениеdelete
, а массив содержал бы['joe', undefined, 'loic']
- person Barmar   schedule 27.11.2014.splice
работает внутри. Сначала он перезапишет (обновит) элементы массива, а затем удалит их. - person Felix Kling   schedule 27.11.2014delete
оставляет дыру в массиве, что обычно нежелательно. - person Felix Kling   schedule 28.11.2014