簡體   English   中英

在JavaScript中過濾JSON子對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM