Есть вот такой массив:
[{
id: 100,
chance: 10
},
{
id: 100,
chance: 30
},
{
id: 200,
chance: 10
},
{
id: 300,
chance: 5
},
{
id: 200,
chance: 30
},
{
id: 100,
chance: 15
}
]
Как сделать цикл, чтобы возвращал он подобное:
id:100 chance: 55 (10+30+15 выводить не надо)
id:200 chance: 40 (10+30 выводить не надо)
id:300 chance: 5
Нужно чтобы цикл складывал chance
у объектов с одинаковым id
Группировка по id
с помощью объекта и вывод на экран id
+ chance
:
var data = [{ id: 100, chance: 10 }, { id: 100, chance: 30 }, { id: 200, chance: 10 },
{ id: 300, chance: 5 }, { id: 200, chance: 30 }, { id: 100, chance: 15 }];
var result = {};
for (var element of data)
{
if (result[element.id] == undefined)
result[element.id] = 0;
result[element.id] += element.chance;
}
for (var id in result)
console.log("id: " + id + ", chance: " + result[id]);
Вариант с reduce, впрочем, принципиально он ничем не отличается от ответа Regent
let data = [{
id: 100,
chance: 10
},
{
id: 100,
chance: 30
},
{
id: 200,
chance: 10
},
{
id: 300,
chance: 5
},
{
id: 200,
chance: 30
},
{
id: 100,
chance: 15
}
];
let result = data.reduce((prev, item) => {
if (item.id in prev) {
prev[item.id] += item.chance
} else {
prev[item.id] = item.chance;
}
return prev;
}, {})
Object.keys(result).forEach(id => {
console.log(`id:${id}, chance:${result[id]}`);
})
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Добрый день! Пытаюсь перехватить ЛЮБОЕ onclick событие в WKWebViewВесь сайт работает посредством js запросов, так что в func webView(_ webView: WKWebView, decidePolicyFor...