如何使用JavaScript获取Json对象中字符串的实例数

时间:2019-06-20 15:40:10

标签: javascript arrays json object

我在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 个答案:

答案 0 :(得分:1)

遍历对象的属性很容易。一种方法是使用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);

答案 1 :(得分:0)

使用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});