Прохождение через свойства объекта Javascript
Я хочу пройти через свойство объекта JavaScript
var obj =
{
a: 'value1',
b: 'value2',
c: 'value3',
d: 'value4'
};
for (var prop in obj) {
prop = 'xxx';
}
Но приведенный выше код не работает. Можете ли вы помочь мне, как это сделать?
Ответы
Ответ 1
prop
будет ссылаться на имя свойства, а не на его значение.
for (var prop in obj) {
obj[prop] = 'xxx';
}
Создать документацию.
Также вы можете проверить, принадлежит ли свойство объекту с помощью hasOwnProperty
. Может случиться так, что кто-то добавляет свойства прототипу, а также тегируются с помощью for ... in
.
Ответ 2
Вы должны проверить, принадлежит ли это свойство объекту, а не прототипу.
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
obj[prop] = 'xxx';
}
}
Ответ 3
Вот как это делается с помощью ES5 - Object.keys():
Object.keys(obj).forEach(function(key, idx) {
...
});
http://jsfiddle.net/magiccrafter/bvwenh5d/
Mozilla docs: ссылка
Ответ 4
Если вы находитесь в дружественной среде ES6, вы также можете попробовать использовать цикл for..., который ближе к вашей первоначальной попытке.
EDIT: Как отметил Калеб, for..of
специфичен для коллекций с свойством Symbol.iterator(например, не для стандартных объектов JS).
Но я оставляю этот ответ здесь, если кто-то еще найдет полезным в какой-то момент, чтобы он явно указал, что for..of
не является отличным решением здесь.
let obj = {};
for (let prop of obj) { // This will throw an error
prop = 'xxx';
}
Ссылка: MDN - для....