JSON对象多个过滤器

时间:2016-03-23 12:58:37

标签: javascript jquery arrays json object

我有JSON对象,其中数据过滤从表单中选择元素。 我的表格有以下内容:

Min Age - Max AgeGender - male(1) & female(2)

以下是我的JSON对象:

[
   {
      "id":"1",
      "name":"nehil",
      "gender":"1",
      "birthday":"1991-07-22",
      "business_id":"1",
      "timestamp":"2016-03-23 04:46:42",
      "age":"24"
   },
   {
      "id":"2",
      "name":"vartika ",
      "gender":"2",
      "birthday":"1990-08-14",
      "business_id":"1",
      "timestamp":"2016-03-23 04:46:46",
       "age":"25"
   },
   {
      "id":"3",
      "name":"atharva",
      "gender":"1",
      "birthday":"1992-10-10",
      "business_id":"1",
      "timestamp":"2016-03-23 04:46:49",
       "age":"23"
   },
   {
      "id":"4",
      "name":"karan",
      "gender":"1",
      "birthday":"1992-12-22",
      "business_id":"1",
      "timestamp":"2016-03-23 04:46:52",
      "age":"23"
   }
]

Gender选择男性,我想要来自对象的所有男性id并将其推入数组。 之后如果我选择最小年龄为23岁,最大年龄为24岁,我希望所有具有以下年龄的男性在该数组中更新。

实现这一目标的最佳策略是什么?

以下是我的小提琴链接 - http://jsfiddle.net/Nehil/2ym3ffo0/4/

2 个答案:

答案 0 :(得分:3)

您可以使用filter

var arrMale,arrFeMale ; 
arrMale = geGenderData(1)
arrFemale = geGenderData(2)

console.log(arrMale)
console.log(arrFemale)

    function geGenderData(intGenderNum){

        return data.filter(function(oneObj,key){

           return oneObj.gender ==intGender;
        })

    }

工作fiddle;

类似的情况下,你可以做最小和最大条件的年龄

答案 1 :(得分:0)

如果您需要搜索多个项目,可以使用具有特殊结构的对象进行搜索。该提议使用一个对象,使用此结构进行过滤:

include

该算法在{ gender: '1', age: { min: 23, max: 24 }, birthday: function (s) { return s.match(/-10-10/); } } 中查找每个属性,如果所有比较都为真,则该元素将添加到结果集中。

search