У меня есть этот объект с вложенными массивами/объектами:
{
"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
Просто используйте длины массива:
var USA = myObj.USA.length;
var Canada = myObj.CANADA.length;
Или, для больших наборов данных:
var result = {};
Object.keys(myObj)
.forEach(function(key,index) {
result[key] = myObj[key].length;
});
С помощью lodash вы можете использовать mapValues:
let result = _.mapValues(data, 'length');
Решение с использованием функции 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)