Поскольку es2015 становится все более популярным, я публикую этот ответ, который включает использование генератора и итератора для плавного перебора пар [key, value]
. Как это возможно на других языках, например, Ruby.
Хорошо, вот код:
const MyObject = {
'a': 'Hello',
'b': 'it\'s',
'c': 'me',
'd': 'you',
'e': 'looking',
'f': 'for',
[Symbol.iterator]: function* () {
for (const i of Object.keys(this)) {
yield [i, this[i]];
}
}
};
for (const [k, v] of MyObject) {
console.log(`Here is key ${k} and here is value ${v}`);
}
Всю информацию о том, как вы можете сделать итератор и генератор, вы можете найти на странице разработчика Mozilla.
Надеюсь, это кому-то помогло.
EDIT:
ES2017 будет включать Object.entries
, что сделает итерацию по [key, value]
парам в объектах еще проще. Теперь известно, что он будет частью стандарта в соответствии с информацией о стадии ts39 .
Думаю, пришло время обновить мой ответ, чтобы он стал еще свежее, чем сейчас.
const MyObject = {
'a': 'Hello',
'b': 'it\'s',
'c': 'me',
'd': 'you',
'e': 'looking',
'f': 'for',
};
for (const [k, v] of Object.entries(MyObject)) {
console.log(`Here is key ${k} and here is value ${v}`);
}
Подробнее об использовании можно узнать на
MDN страница