Подсчитать свойство объекта внутри массива, используя lodash или vanilla javascript

1

У меня есть этот объект с вложенными массивами/объектами:

{
"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
Теги:
arrays
lodash

3 ответа

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;
    });
  • 0
    я хочу повторить, массив имеет ~ 400 объектов
  • 0
    @StathisNtonas: для этого добавлен пример.
Показать ещё 1 комментарий
3

С помощью lodash вы можете использовать mapValues:

let result = _.mapValues(data, 'length');
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)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню