Answer
t.me/js_testОтвет:
b
Объяснение:
У нас есть два объекта с абсолютно одинаковыми свойствами и значениями.
Когда bустанавливается, b[arr[i]]свойство устанавливается на текущий индекс на каждой итерации. Когда а устанавливается, spread-оператор ( ...) будет создавать мелкую копию объекта аккумулятора ( acc) на каждой итерации и дополнительно устанавливать новое свойство. Эта неглубокая копия дороже, чем не выполнение неглубокой копии.
a требует создания 2 промежуточных объектов до достижения конечного результата, тогда как b не создает никаких промежуточных объектов. Поэтому b создается более эффективно.
Код для проверки:
const arr = [1, 2, 3];
const a = arr.reduce(
(acc, el, i) => ({ ...acc, [el]: i }),
{}
);
const b = {};
for (let i = 0; i < arr.length; i++) {
b[arr[i]] = i;
};