根据其他键值获取数组中的出现次数 [英] Fetch the no of of occurence in a array based on other key value

查看:58
本文介绍了根据其他键值获取数组中的出现次数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

我具有上述数组,并且必须基于类型"值(即如下所示的预定义"或自定义")构造对象

I have above array and i have to construct object, based on "type" value i.e "predefined" or "custom" as below

updatedjson = {
    "predefined": [{
            "name": "California",
            "count": 1
        }, {
            "name": "Florida",
            "count": 1
        }]
     "custom": [{
            "name": "California",
            "count": 2
        }, {
            "name": "Texas",
            "count": 1
        }]
 }

使用javascript或lodash的任何方法

Any Approach using javascript or lodash

推荐答案

使用Lodash

Using Lodash

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

// Solution to the problem

var updatedJson = _(json).groupBy("type").value();    // #1

_.forOwn(updatedJson, function(value, key) {
  let countByCity = _(value).countBy('city').value(); // #2
  let res = [];

  _.forOwn(countByCity, function(value, key) {
    res.push({                                        // #3
      name: key,
      count: value
    });
  });

  updatedJson[key] = res;
});

console.log(updatedJson);

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js"></script>

说明

  1. 按类型编码第一个分组
  2. 然后按组内的城市进行计数
  3. 最后将计数对象按预期格式推入数组

这篇关于根据其他键值获取数组中的出现次数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆