我的数据似乎是这样的:
const myObj = {
"incidents": [{
"id": 4,
"fullName": "edsadas",
"address": "Bagbaguin, Pandi, Bulacan",
}, {
"id": 5,
"fullName": "reasdsa",
"address": "Dalig, Balagtas, Bulacan",
}, {
"id": 6,
"fullName": "dsa",
"address": "Dalig, Balagtas, Bulacan",
}],
}
我的问题,如何返回带有计数的相似值,如下所示:
{
"Dalig, Balagtas, Bulacan": 2,
"Bagbaguin, Pandi, Bulacan": 1
}
您可以使用
函数reduce
:
var obj = { "incidents": [{ "id": 4, "fullName": "edsadas", "address": "Bagbaguin, Pandi, Bulacan", }, { "id": 5, "fullName": "reasdsa", "address": "Dalig, Balagtas, Bulacan", }, { "id": 6, "fullName": "dsa", "address": "Dalig, Balagtas, Bulacan", } ]};
var result = obj.incidents.reduce((a, c) => {
a[c.address] = (a[c.address] || 0) + 1
return a;
}, {});
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
使用reduce
和comma operator
:
var obj = { "incidents": [{ "id": 4, "fullName": "edsadas", "address": "Bagbaguin, Pandi, Bulacan", }, { "id": 5, "fullName": "reasdsa", "address": "Dalig, Balagtas, Bulacan", }, { "id": 6, "fullName": "dsa", "address": "Dalig, Balagtas, Bulacan", } ]},
result = obj.incidents
.reduce((a, c) => (a[c.address] = (a[c.address] || 0) + 1, a), {});
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
您可以遍历它们并每次递增值。如果没有找到,只需分配1
const data = [
{
"id": 4,
"fullName": "edsadas",
"address": "Bagbaguin, Pandi, Bulacan",
},
{
"id": 5,
"fullName": "reasdsa",
"address": "Dalig, Balagtas, Bulacan",
},
{
"id": 6,
"fullName": "dsa",
"address": "Dalig, Balagtas, Bulacan",
}];
const count = data.reduce((acc, item) => (acc[item.address] = acc[item.address] ? acc[item.address] + 1 : 1, acc), {});
console.log(count);