Есть экземпляр Map, например
let rec = new Map([
["1", Buffer.from('a', 'hex')],
["2", Buffer.from('b', 'hex')],
]);
Можно ли его перебрать с помощью forEach так же, как с обычным одномерным массивом? Т.е., мне нужно в одном участке кода использовать "1", а в другом Buffer.from('b', 'hex')
Это возможно?
Это можно сделать так:
let rec = new Map([
["1", Buffer.from('a', 'hex')],
["2", Buffer.from('b', 'hex')],
]), index = 1;
Первый способ:
rec.forEach((key, value) => {
console.log(index + ' - ' + key + ' = ' + value);
++index;
});
Второй способ:
for (var [key, value] of rec.entries()) {
console.log(index + ' - ' + key + ' = ' + value);
++index;
}
Работать будет и без .entries() тоже.
Можно с помощью IIFE (счетчик в аргументе, и его инкремент "вручную"):
let rec = new Map([
['1', 'First value'],
['2', 'Second value'],
]);
(idx => rec.forEach((val, key) => { // idx - счетчик
console.log(idx++, ':', val); // постинкремент на каждой итерации
}))(0); // 0 - начальное значение счетчика
Или через временный массив:
[...rec.entries()].forEach(([val, key], idx) => /*...*/);
Оба этих способа характерны тем что не требуют объявления внешней переменной для значения счетчика.
Второй способ кушает память - его желательно использовать только с небольшими словарями.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости