我试图通过下面的“carObj”进行筛选,因为用户从页面上的列表中选择“筛选器”并仅显示“匹配”子对象。通过JavaScript中的JSON子对象进行筛选
当前,当用户选择一个“过滤器”它被添加到“filterObj”,然后我滚动通过“carObj”像8 $ .each语句拉出所有匹配的子对象。我在价值观上进行匹配,并多次滚动来实现它。例如,假设下面的例子,只有“carObj”中的第三个子对象将被“返回”,并带有它的所有值。就其本身而言,我将所有匹配的属性设置为“TRUE”,对于任何不匹配的都设置为“FALSE”。
然后在网页上浏览“carObj”中所有TRUE值的子对象,并在表格中显示其信息/值。
我不确定这是否是最有效的方法。
/* Object filled as user selects "filters" */
filterObj ={
"Seats": {},
"color": {
"Orange": "Orange",
"Red": "Red"
},
"Transmission": {
"Manual": "Manual"
},
"Make": {
"Ford": "Ford"
},
"Model": {},
"Status": {
"New": "New"
}
}
/* Main object that contains all cars */
carObj = {
"cars": [
{
"seats":"6",
"color":"Red",
"transmission":"Automatic",
"make":"Ford",
"model":"Windstar",
"status":"New",
},
{
"seats":"4",
"color":"Black",
"transmission":"Manual",
"make":"Mazda",
"model":"CRX",
"status":"New",
},
{
"seats":"2",
"color":"Orange",
"transmission":"Manual",
"make":"Ford",
"model":"Galaxy",
"status":"New",
}
]
}
谢谢!这个数组更有意义。过滤器对象只是感觉不对。我正在穿过小提琴,对我来说有点复杂,但我正在进行控制台录音。看起来好像是在任何比赛中都拉出来,而不是“全部”的比赛。当我在控制台注销“cars [n] [f [i]]”和“cars [n] [f [i]]”时,它会显示“红色”,“手动”和“橙色”的匹配。但唯一真正的匹配是带有手册的橙色汽车。我会继续玩,但如果你想出点什么,请告诉我。 – Robert
@Robert yes与任何属性匹配。它应该只与所有人匹配? – DontVoteMeDown
是的,它只会产生一个“匹配”。任何具有倍数的东西,比如“橙色”和“红色”都是“OR”情况。就像我不知道你是否熟悉MySQL,但是如果它是一个DB:[SELECT * from'carObj' WHERE('color' =“orange”or'color' =“red”)AND'transmission' = “手动”和“状态”=“新”]。不知道这是多少有点混淆...... – Robert