имеется
let arr = [{idBox: "15", id: 13, price: 8805},
{idBox: "6", id: 14, price: 4467},
{idBox: "6", id: 15, price: 18853},
{idBox: "7", id: 16, price: 5649},
{idBox: "7", id: 17, price: 3645},
{idBox: "7", id: 18, price: 2505},
{idBox: "7", id: 19, price: 4397},
{idBox: "8", id: 20, price: 5548},
{idBox: "8", id: 21, price: 3645},
{idBox: "8", id: 22, price: 3645}]
Не могу придумать каким образом сложить элементы price с одинаковыми значениями idBox, что бы конечный вариант был как пример
{idBox: "6", id: 14, price: (здесь сумма одинаковых idBox(4467 + 18853))},
{idBox: "6", id: 15, price: (здесь сумма одинаковых idBox)}
либо новый массив объектов типа [{idBox: "6", price:сумма одинаковых элементов}]
Можно вот так. В результате объект с одержащий ключи - idBox : значение - сумму его price
let res = Object.fromEntries(arr.map(item => [item.idBox, 0]));
arr.forEach(item => {res[item.idBox] += item.price})
Ссылка на fiddle
Можно использовать Array.reduce
const arr = [{idBox: "15", id: 13, price: 8805},
{idBox: "6", id: 14, price: 4467},
{idBox: "6", id: 15, price: 18853},
{idBox: "7", id: 16, price: 5649},
{idBox: "7", id: 17, price: 3645},
{idBox: "7", id: 18, price: 2505},
{idBox: "7", id: 19, price: 4397},
{idBox: "8", id: 20, price: 5548},
{idBox: "8", id: 21, price: 3645},
{idBox: "8", id: 22, price: 3645}];
let result = arr.reduce((a,c) => (a[c.idBox] = (a[c.idBox] || 0) + c.price, a), {});
console.log(result);
Наговнокодил =) зато просто и понятно
var arr2 = new Object
for(a in arr)
{
arr2[arr[a].idBox] =(!!arr2[arr[a].idBox]) + arr[a].price
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Работает! Хочу, чтобы при нажатии CTRL, запускалась функция playlistRefresh();
на странице моего сайта реализована функция "dark theme", но при перезагрузке все возвращается и поэтому нужна помощь, чтобы реализовать данную...
Вот задание: для всех значений X, задаваемых параметрами из набора: начальное значение А, конечное значение В, шаг Dx, количество шагов N x, ограничение...