Как получить количество экземпляров строки в объекте Json, используя JavaScript - PullRequest
0 голосов
/ 20 июня 2019

У меня ниже объекта Json, который содержит автомобиль, связанный с их производителем. От объекта Json я хочу получить общее количество автомобилей, а также вхождение определенного автомобиля в объект.

var Cars = { "manufacturer":"Car":
               [{"Saab":"Automobile AB"},
                {"Volvo":"V40"},
                {"BMW":"Estoril Blue"},
                {"Volvo":"V40"},
              ]};

Я пытался использовать filter, но поскольку фильтр специфичен только для Arrays, поэтому не могу использовать его с объектом Json. Ниже приведен исходный код.

var Cars = {"manufacturer":"Car":
               [{"Saab":"Automobile AB"},
                {"Volvo":"V40"},
                {"BMW":"Estoril Blue"},
                {"Volvo":"V40"},
               ]};

var volvo = "V40";

var numberOfCars = Cars.filter(function (x) {
       return x === volvo;
    }).length;

Я ожидаю, что вывод приведенного выше исходного кода равен 2. Но я получаю исключение

Cars.filter не является функцией

Мне нужно, чтобы вы, ребята, помогли мне получить число V40 (то есть 2), а также общее количество автомобилей (которых 4).

Ответы [ 2 ]

1 голос
/ 20 июня 2019

Достаточно легко пройтись по свойствам объекта. Одним из способов является использование Object.entries для получения массива свойств и значений;

var Cars = [{"Saab":"Automobile AB"}, {"Volvo":"V40"}, {"BMW":"Estorill Blue"}, {"Volvo":"V40"}];

let properties = Object.entries(Cars);
console.log("Number of cars: ", Cars.length);
console.log("Number of Volvos: ", Cars.filter((car) => Object.keys(car)[0] === "Volvo").length);
0 голосов
/ 20 июня 2019

Используйте filter, а затем вы можете создать объект, который имеет в качестве ключа повторяющееся имя автомобиля и его число вхождений как val.

const input = [{"Saab":"Automobile AB"}, {"Volvo":"V40"}, {"BMW":"Estorill Blue"}, {"Volvo":"V40"}];

const volvo = "V40";

const duplicateCars = input.filter(({Volvo}) => volvo == Volvo);

const duplicateCarName = Object.keys(duplicateCars[0])[0];

console.log({[duplicateCarName]:duplicateCars.length});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...