我在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)的出现。
答案 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});