考虑下面的javascript中的对象数组
const array = [ { 10205: 2 }, { 10207: 3 }, { 10205: 2 }, { 10207: 1 } ]
我想把它换成
array = [ { 10205: 4 }, { 10207: 4 } ]
0vvn1miw1#
const array = [{ 10205: 2 }, { 10207: 3 }, { 10205: 2 }, { 10207: 1 }]; const newArray = []; array.forEach((element) => { const elementKey = Object.keys(element)[0]; const foundIndex = newArray.findIndex((_) => Object.keys(_)[0] === elementKey); if (foundIndex >= 0) { newArray[foundIndex] = {[elementKey]: newArray[foundIndex][elementKey] + element[elementKey]}; } else newArray.push(element); }); console.log(newArray)
piah890a2#
请使用reduce函数。
const array = [ { 10205: 2 }, { 10207: 3 }, { 10205: 2 }, { 10207: 1 } ] console.log(Object.values(array.reduce((acc, el)=>{ Object.keys(el).map((key)=>{ acc[key] = { [key]: (acc?.[key]?.[key] ?? 0) + el[key], } }) return acc; }, {})));
2条答案
按热度按时间0vvn1miw1#
piah890a2#
请使用reduce函数。