Итерация по каждому свойству объекта в javascript с использованием Prototype?
Есть ли способ итерации по каждому свойству объекта с использованием рамки прототипа JavaScript?
Здесь ситуация: я получаю ответ AJAX в JSON, который выглядит примерно так:
{foo: 1, bar: 2, barobj: {75: true, 76: false, 85: true}}
Если я оцениваю ответ json в переменной response
, я хочу иметь возможность перебирать каждое свойство в объекте response.barobj
, чтобы увидеть, какие индексы являются истинными и которые являются ложными.
Прототип имеет как Object.keys()
, так и Object.values()
, но, похоже, не имеет простой функции Object.each()
! Я мог бы взять результаты Object.keys() и Object.values () и перекрестно ссылаться на другую, поскольку я перебираю ее, но это такой хак, что я уверен, что есть правильный способ сделать это!
Ответы
Ответ 1
Вы должны сначала преобразовать свой литерал объекта в Prototype Hash:
// Store your object literal
var obj = {foo: 1, bar: 2, barobj: {75: true, 76: false, 85: true}}
// Iterate like so. The $H() construct creates a prototype-extended Hash.
$H(obj).each(function(pair){
alert(pair.key);
alert(pair.value);
});
Ответ 2
Здесь нет необходимости в прототипе: JavaScript имеет for..in
петли. Если вы не уверены, что никто не испортился с Object.prototype
, проверьте hasOwnProperty()
, а именно
for(var prop in obj) {
if(obj.hasOwnProperty(prop))
doSomethingWith(obj[prop]);
}
Ответ 3
Вы должны перебирать ключи и получать значения с помощью квадратных скобок.
Смотрите: Как перечислять свойства объекта javascript?
РЕДАКТИРОВАТЬ: Очевидно, что этот вопрос дублирует.