Я хотел бы суммировать все объекты по их имени, используя цикл. Ключ "id" будет удалять
var arr = [{id:1, "my color":1,"my fruit":4},{id:2,"my color":2,"my fruit":4},etc];
var merged = arr.reduce(function(previousValue, currentValue) {
return {
"my fruit": previousValue["my fruit"] + currentValue["my fruit"],
"my color": previousValue["my color"] + currentValue["my color"],
etc:...
}
});
Я бы хотел этот результат
result = [{"my color":3},{"my fruit":8},etc];
Вместо жесткого кодирования ключей было бы более гибким, если бы вы повторили все ключи в объекте внутри функции уменьшения и добавили их в результат, таким образом, входные объекты могут иметь произвольные пары ключ/число:
const arr = [{id:1, "my color":1,"my fruit":4},{id:2,"my color":2,"my fruit":4}];
const res = arr.reduce((a, { id, ...rest }) => {
Object.entries(rest).forEach(([key, val]) => {
a[key] = (a[key] || 0) + val;
});
return a;
}, {});
console.log(res);
values
результата, затем разделите каждое значение на сумму
sumObjectsByKey(...arr)