在javascript中过滤对象数组

时间:2016-08-12 18:48:28

标签: javascript arrays object filter

我已经尝试了两个小时来解决这个问题,并找到了一些与我的问题相关的文章,但我似乎无法在我的情况下提出建议。所以我希望你能提供帮助。

我有一个名为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中有多少条目符合上述参数。

2 个答案:

答案 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 } ]
*/