我有嵌套数组/对象的这个对象:
{
"USA": [
{
"location": "New York",
"municipality": "Manhattan",
},
{
"location": "Texas",
"municipality": "Austin",
}
],
"CANADA": [
{
"location": "Ontario",
"municipality": "no municipality",
}
]
}
我想使用lodash或纯JavaScript来计算location
和USA
中有多少CANADA
。怎么可能?
期望的结果:
USA: 2
CANADA: 1
答案 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)