2014-10-16 2 views
0

Я использую следующий код, чтобы сбросить флаг удален:JavaScript: Установка атрибутов конкретного элемента к ложным в объекте массивов

for(var prefix in $42.words) { 
    var words = $42.words[prefix]; // words is an array of objects 
    for(var j=0 ; j<words.length ; j++) $42.words[prefix][j].deleted = false; 
} 

Элементы массива также являются объектами.

Возможно ли реализовать это более простым или быстрым способом?

ответ

0

Это немного быстрее, потому что есть только один поиск для words.length и не поиски для $42.words[prefix] во внутреннем цикле:

for(var prefix in $42.words) { 
    var words = $42.words[prefix]; 
    for(var j = words.length - 1; j >= 0; j--) words[j].deleted = false; 
} 
+0

На первой итерации вы попытаетесь установить 'words [words.length] .deleted', но' words [words.length] 'будет неопределенным, поэтому он будет выбрасывать. Также обратите внимание, что некоторые браузеры оптимизированы для перебора массивов вперед, так что повторение назад может быть медленнее. – Oriol

+0

@Oriol Спасибо, конечно - 1, и опечатка 0/= тоже. Исправлена. Также спасибо за информацию о браузерах. Я здесь, чтобы учиться. –

0

что-то вроде:

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

var $42 = {}; 
$42.words = [{isOn:true, deleted:true},{isOn:true, deleted:true},{isOn:true, deleted:true}]; 

$42['words'].forEach(function(obj,i){ 
    obj.deleted = false; 
}); 
Смежные вопросы