[英]Filtering through JSON sub-objects in JavaScript
我試圖通過下面的“carObj”進行過濾,因為用戶從頁面上的列表中選擇“過濾器”並僅顯示“匹配”子對象。
目前,當用戶選擇“過濾器”時,它會被添加到“filterObj”中,然后我使用類似8 $ .each語句的“carObj”滾動來拉出所有匹配的子對象。 我在值上匹配並多次滾動以使其存在。
例如,假設下面的例子,只有“carObj”中的第3個子對象將被“返回”其所有值。 就目前而言,我為所有匹配設置了一個屬性為“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",
}
]
}
那是一件很難的事。 看到這個小提琴 。
注意事項:
不能用於過濾器對象中的對象。 我用簡單的數組:
"color": { "Orange": "Orange", "Red": "Red" },
至
"color": ["Orange", "Red"],
它將更加簡單和合乎邏輯;
我已經將鍵更改為所有數組和對象中大寫的第一個字母。 算法必須以其他方式關注它,並根據其功能進行調整。 我修復了腳本變小,但如果想要它可以使用非標准的鍵名;
該函數返回carObj
中與任何過濾器匹配的任何對象,而不是所有過濾器。 但它可以制作。
總之,我不太確定它的工作是否100%。 但它一試。 如果你發現一些錯誤/錯誤現在讓我。
我希望它有所幫助。
更新:
我已更新代碼以匹配所有過濾器,每個過濾器中至少有一個值。 看到這個小提琴 。
因此,如果它具有帶“ ["Orange"]
Color
["Orange"]
,汽車必須匹配此顏色才能被選中,如果Color
有["Orange", "Red"]
,那么汽車必須匹配Orange
或 Red
。 像Color: []
這樣的過濾器會被忽略。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.