Мне было интересно, безопасно ли использовать нечистый редуктор в array.prototype.reduce
в javascript.
Пример:
Допустим, у меня есть следующий массив:
[{ id: 0, value: 6 }, { id: 1, value: 25 }]
Если бы я хотел преобразовать это в карту, где идентификатор стал ключом, а значение - значением.
У меня есть два варианта: с чистым редуктором и нечистым.
// pure option
const data = [{ id: 0, value: 6 }, { id: 1, value: 25 }];
const object = data.reduce((accum, { id, value }) =>
Object.assign({}, accum, { [id]: value }),
{}
);
const map = new Map(Object.entries(object));
// impure option
const data = [{ id: 0, value: 6 }, { id: 1, value: 25 }];
const map = data.reduce(
(accum, { id, value }) => accum.set(id, value),
new Map()
);
Несмотря на то, что нечистый вариант намного быстрее и содержит меньше стандартного кода, я не уверен, безопасен ли он или может ли он дать условия гонки.