Как мы знаем, с помощью цикла for-in
можно перебрать ключи объекта.
const obj = { a: 100, b: 200, c: 300 }; for(const key in obj) { console.log(key); // "a", "b", "c" }
Но что если мы хотим перебирать пары ключ-значаение у объекта с помощью for-of
(как у Map).
for(const [key, value] of obj) { console.log(key, value); }
Реализуйте возможность перебирать пары ключ-значаение у любых объектов в джаваскрипте.
С таким подходом можно, например, фильтровать объекты по ключам без создания дополнительных массивов.
Как мы это делаем сейчас:
// Object.entries создает лишний временный массив // filter тоже создает лишний массив const filteredObj = Object.fromEntries( Object.entries(obj).filter(([_, value]) => value > 100) ); console.log(filteredObj);
Если бы объект был iterable
, мы могли бы сэкономить:
// Iterator.from и filter не тратят память const filteredObj2 = Object.fromEntries( Iterator.from(obj).filter(([_, value]) => value > 100) ); console.log(filteredObj2);