使用JSON数组中的count返回相同的值,Javascript

问题描述 投票:0回答:2

我的数据似乎是这样的:

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",
  }],
}

我的问题是,如何用count返回相似的值,如下所示:

{
  "Dalig, Balagtas, Bulacan": 2,
  "Bagbaguin, Pandi, Bulacan": 1
}
javascript arrays json
2个回答
5
投票

你可以使用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; }

使用reducecomma 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
投票

您可以迭代它们并每次递增值。如果没有找到,只需指定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);
© www.soinside.com 2019 - 2024. All rights reserved.