我試圖通過下面的「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