我已经尝试了两个小时来解决这个问题,并找到了一些与我的问题相关的文章,但我似乎无法在我的情况下提出建议。所以我希望你能提供帮助。
我有一个名为personArray
的对象数组,有50,000个条目,这里有两个示例条目:
[
{ sex: "Male",
lastName: "DIXON",
firstName: "Esteban",
age: 51,
isSingle: true
},
{
sex: "Female",
lastName: "BULLOCK",
firstName: "Daniela",
age: 58,
isSingle: false
}
]
我希望能够从该数据中获取有用的人口统计信息。例如,我想知道Male
20到24 age
之间有多少isSingle
。我该怎么做?
如上所述,我已经阅读了其他相关的答案,但是,在这方面相当新,却无法将它们转换为我的特定情况。我不是要找单个对象,也不是单个对象属性的单个值。我想找出50 000中有多少条目符合上述参数。
答案 0 :(得分:2)
功能方法:
var count = input.filter(function(item) {
return item.sex == 'Male' && item.age > 19 && item.age < 25 && item.isSingle;
}).length;
势在必行的方法:
var count = 0;
input.forEach(function(item) {
if (item.sex == 'Male' && item.age > 19 && item.age < 25 && item.isSingle) count++;
});
答案 1 :(得分:1)
使用Array.prototype.filter
。您可以在此处找到详细信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
var a = [{
sex: "Male",
lastName: "DIXON",
firstName: "Esteban",
age: 51,
isSingle: true
}, {
sex: "Male",
lastName: "DOE",
firstName: "John",
age: 21,
isSingle: true
}, {
sex: "Female",
lastName: "BULLOCK",
firstName: "Daniela",
age: 58,
isSingle: false
}];
a = a.filter(function(el) {
return el.sex === "Male" && el.age > 20 && el.age < 24 && el.isSingle === true;
});
console.log(a);
/*
[ { sex: 'Male',
lastName: 'DOE',
firstName: 'John',
age: 21,
isSingle: true } ]
*/