2012-06-12 4 views
1

Есть ли способ перебора свойств объекта без использования цикла for for?Как ссылаться на объекты propeperties по индексу?

По словам Николаса К. Закаса, для цикла in for требуется цикл длиной более 8 раз, чтобы перебрать объект по сравнению с циклом for, но я не могу найти способ перебрать свойства объекта, не изменяя их имена на что-то как 1, 2, 3 и т. д. ведьма не идеальна.

Скорость является главной заботой для меня.

ответ

2

У вас может быть другой массив, содержащий ваши ключи. Что-то вроде этого:

var obj = { 
    'key': 'value', 
    'some': 'other value' 
}, 
    arr = [ 'key', 'some' ]; 

for (var i = 0, l = arr.length; i < l; i++) { 
    console.log(obj[ arr[ i ] ]); 
} 

Однако, это уродливо. Производительность в этом случае никогда не будет вашим узким местом, вы должны предпочесть читаемость. Код может быть указан следующим образом:

Object.keys(obj).forEach(function(key) { 
    console.log(obj[ key ]); 
}); 

Это просто чище и читаемо. (for..in также можно использовать, это было только ради примера)

+0

Это хорошая работа вокруг, спасибо человеку :) – Luka

+0

После окончания функции forEach отсутствует закрывающая скобка. –

+0

@MarkKnol Спасибо за опечатку! –

2

Вы не можете. Объекты не имеют индексированных свойств.