使用lodash或vanilla javascript计算数组内的对象属性

时间:2017-06-30 11:16:03

标签: javascript arrays lodash

我有嵌套数组/对象的这个对象:

{
"USA": [
    {
        "location": "New York",
        "municipality": "Manhattan",
    },
    {
        "location": "Texas",
        "municipality": "Austin",
    }
  ],
"CANADA": [
    {
        "location": "Ontario",
        "municipality": "no municipality",
    }
  ]
}

我想使用lodash或纯JavaScript来计算locationUSA中有多少CANADA。怎么可能?

期望的结果:

USA: 2
CANADA: 1

3 个答案:

答案 0 :(得分:3)

使用lodash,您可以使用mapValues

let result = _.mapValues(data, 'length');

答案 1 :(得分:2)

只需使用数组长度:

var USA = myObj.USA.length;
var Canada = myObj.CANADA.length;

或者,对于较大的数据集:

var result = {};
Object.keys(myObj)
    .forEach(function(key,index) {
        result[key] = myObj[key].length;
    });

答案 2 :(得分:2)

使用Array.prototype.reduce()函数的解决方案:

var obj = {
        "USA": [ { "location": "New York", "municipality": "Manhattan" }, { "location": "Texas", "municipality": "Austin" } ], "CANADA": [ { "location": "Ontario", "municipality": "no municipality" }] 
    },

    result = Object.keys(obj).reduce(function(r,k){
        r[k] = obj[k].length;
    	return r;
    }, {});

console.log(result)