我有JSON对象,其中数据过滤从表单中选择元素。 我的表格有以下内容:
Min Age - Max Age
和Gender - 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/
答案 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