获取对象数组中没有出现的计数

问题描述 投票:1回答:4
var json = [{
        "city": "California",
        "name": "Joe",
        "age": 17
    }, {
        "city": "California",
        "name": "Bob",
        "age": 17
    }, {
        "city": "California",
        "name": "Bob",
        "age": 35
    }, {
        "city": "Texas",
        "name": "Bob",
        "age": 35
    }, {
        "city": "Florida",
        "name": "Bob",
        "age": 35
    }
];

我只是基于城市价值而不是出现,如下所示。

updatedjson=[{"name":"California","count":3},{"name":"Texas","count":1},{"name":"Florida","count":1}]

使用lodash或javascript使用任何approah

javascript reactjs lodash
4个回答
1
投票

使用Lodash,那将是:

const updatedJson = _(json)
                     .countBy('city')
                     .map((count, name) => ({ name, count }))
                     .value();

const json = [{"city":"California","name":"Joe","age":17},{"city":"California","name":"Bob","age":17},{"city":"California","name":"Bob","age":35},{"city":"Texas","name":"Bob","age":35},{"city":"Florida","name":"Bob","age":35}];

const updatedJson = _(json)
  .countBy('city')
  .map((count, name) => ({ name, count }))
  .value();
  
console.log(JSON.stringify(updatedJson));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js"></script>

0
投票

var json = [{
        "city": "California",
        "name": "Joe",
        "age": 17
    }, {
        "city": "California",
        "name": "Bob",
        "age": 17
    }, {
        "city": "California",
        "name": "Bob",
        "age": 35
    }, {
        "city": "Texas",
        "name": "Bob",
        "age": 35
    }, {
        "city": "Florida",
        "name": "Bob",
        "age": 35
    }
];

var hash = {}; // will be used for lookup of index of city in updated_json array.
var updated_json = [];
json.forEach(function(item,index){
  // if city exists in hash then retrive its position from hash.
  if(item.city in hash){
    updated_json[hash[item.city]].count++;
  }
  else{
    hash[item.city] = updated_json.length; // store position
    updated_json.push({"name":item.city,"count":1});
  }
});

console.log(updated_json);

0
投票

您可以使用Map收集计数并使用所需属性渲染结果。

var data = [{ city: "California", name: "Joe", age: 17 }, { city: "California", name: "Bob", age: 17 }, { city: "California", name: "Bob", age: 35 }, { city: "Texas", name: "Bob", age: 35 }, { city: "Florida", name: "Bob", age: 35 }],
    result = Array.from(
        data.reduce((m, { city }) => m.set(city, (m.get(city) || 0) + 1), new Map),
        ([name, count]) => ({ name, count })
    );

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

0
投票

以下是如何获得它:

updatedJson = [
    {
       name: "California", 
       count: (_.filter(json, item => item.city === "California").length)
    }
]
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.