簡體   English   中英

用另一個對象數組過濾對象數組

[英]Filter array of objects with another array of object

我想用另一個對象數組過濾一個對象數組。邏輯將用於按類別和顏色等進行產品搜索。這是我的主要數組:

products: [{
                            id: 1,
                              name: 'Product 1',
                              category: 'Home',
                              skill: 'Easy',
                              color: 'blue',
                              price: 100.00
                            }, {
                                id: 2,
                              name: 'Product 2',
                              category: 'Home',
                              skill: 'Intermediate',
                              color: 'red',
                              price: 120.00
                            }, {
                                id: 3,
                              name: 'Product 3',
                              category: 'Office',
                              skill: 'Intermediate',
                              color: 'green',
                              price: 190.00
                            }, {
                                id: 4,
                              name: 'Product 4',
                              category: 'Office',
                              skill: 'Advanced',
                              color: 'blue',
                              price: 260.00
                            }, {
                                id: 5,
                              name: 'Product 5',
                              category: 'Warehouse',
                              skill: 'Advanced',
                              color: 'white',
                              price: 321.00
                            }, {
                                id: 6,
                              name: 'Product 6',
                              category: 'Farm',
                              skill: 'Intermediate',
                              color: 'red',
                              price: 120.00
                            }, {
                                id: 7,
                              name: 'Product 7',
                              category: 'Space',
                              skill: 'Advanced',
                              color: 'green',
                              price: 150.00
                            }, {
                                id: 8,
                              name: 'Product 8',
                              category: 'Bathroom',
                              skill: 'Easy',
                              color: 'black',
                              price: 9.00
                            }]

我正在像這個數組一樣動態創建過濾器。

我正在像這個數組一樣動態創建過濾器。

預期的結果是按多個選定的類別和顏色過濾產品數據。

我嘗試了以下代碼:

var filtered = [];
                  for(var arr in self.products){
                     for(var filter in self.selectedFilters){
                         if(self.products[arr].category == self.selectedFilters[filter].category && self.products[arr].color == self.selectedFilters[filter].color){
                            filtered.push(self.products[arr]);
                           }
                     }
                  }
                  console.log(filtered);
var filtered = [];

for(var arr in myArray){
    for(var filter in myFilter){
        if(myArray[arr].userid == myFilter[filter].userid && myArray[arr].projectid == myFilter[filter].projectid){
            filtered.push(myArray[arr].userid);
        }
    }
}
console.log(filtered);

 myArray = [ { userid: "100", projectid: "10", rowid: "0" }, { userid: "101", projectid: "11", rowid: "1" }, { userid: "102", projectid: "11", rowid: "2" }, { userid: "102", projectid: "13", rowid: "3" }, { userid: "101", projectid: "10", rowid: "4" } ]; myFilter = [ { userid: [ { 0: "101" }, { 1: "102" } ], projectid: [ { 0: "11" } ] } ]; const filterFn = (array, filter) => { let result = []; filter.forEach(element => { let keys = Object.keys(element); keys.forEach(key => { let values = Object.values(element[key]); values = values.map(x => Object.values(x)[0]); let ans = array.filter(e => { if (values.includes(e[key])) return e; }); result = result.concat(ans); }); }); return result; }; console.log(filterFn(myArray, myFilter));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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