比较两个不同数组的所有对象元素



对不起我刚开始的英语。我在过滤以JSON发布的产品列表时遇到了一个问题。该代码是使用react redux以react native编写的。

每个产品的对象如下所示:

ProductTest {
"barcode": "barcode",
"brand": "brand",
"category": "category",
"description": "description",
"details": "details",
"filters": Object {
"cienkie": false,
"farbowane": false,
"krecone_i_puszczace": false,
"normalne": false,
"oslabione": false,
"przetluszczajace": false,
"suche_i_zniszczone": false,
"wszystkie": true,
},
"id": "0",
"image": "image",
"ingredients": "ingredients",
"name": "name",
},

而";appliedFilters";列表如下:

Object {
"cienkie": false,
"farbowane": false,
"krecone_i_puszczace": false,
"normalne": false,
"oslabione": false,
"przetluszczajace": false,
"suche_i_zniszczone": false,
"wszystkie": false,
}

我不知道如何制作";appliedFilters";要与";过滤器";并从列表中返回匹配的产品。如果你有什么想法,我会很高兴的。

您可以使用数组过滤器方法:

let keys = Object.keys(appliedFilters); 
let filteredList = productList.filter(product => {
let matching = true;
keys.forEach(key => {
if(product.hasOwnProperty(key)){
if(!(product.filters[key] === appliedFilters[key])) matching = false;
}
}
if(matching) return product;
})

如果你确信过滤器和产品对象的属性顺序不会改变,你可以这样简化:

let filteredList = productList.filter(product => JSON.stringify(product.filters) === JSON.stringify(appliedFilters))

相关内容

  • 没有找到相关文章

最新更新