набором атрибутов
к примеру:
[{open: 1, close: 2, q: 5, },{open: 1, close: 2, q: 5, },{open: 1, close: 2, q: 5, }]
хочу получить сумму по каждому:
{open: 3, close: 6, q: 15}
reduce
а что сделать с атрибутами? я не знаю изначально какие они будут и сколько их будет?
чет не сильно понимаю как это может помочь
Передав в keys объект вы можете получить все ключи его
const arr = [ { x: 1 }, { x: 2 }, { x: 4 } ] const result = arr.reduce( ( sum, { x } ) => sum + x , 0) console.log( result ) // 7 но если у каждого обьекта может быть по 5 ключей и нужно посчитать каждое и вернуть обьект суммы для каждого из ключей, зачем мне массив ключей?
array.reduce( (acc, nextObject) => Object.entries(nextObject).reduce( (acc, [nextKey, nextValue]) => ({ ...acc, [nextKey]: (acc[nextKey] || 0) + nextValue, }), acc, ), {}, )
спасибо, щас попробую
Учти, что при каждом обновлении свойства acc пересоздаётся. Я думаю, сам найдёшь, как оптимизировать.
попробуй так, проще читается вроде бы но это не точно arr.reduce( (x,y) =>{ Object.keys(y).forEach(k=>x[k]? x[k] += y[k] : x[k] = y[k]) return x },{})
задачка для унижения 🙁
если бы меня так унижали давая что то новое, я бы еще доплачивал)
твой ответ читабильней, в этом согласен, а вот ответ который был перед тобой…
Обсуждают сегодня