尝试查看一个数组中的数据是否与另一个数组中的数据匹配。我有一个对象数组,如此 -
var ProductsList =
[
{"Name": "Product A"; "Rating": "3"},
{"Name": "Product B"; "Rating": "2"},
{"Name": "Product C"; "Rating": "1"},
];
然后我想将此产品列表与用户选择的值进行比较,这些值来自我根据他们通过复选框选择的值得到的数组。因此,如果他们选择1,2,3 - 所有产品都应该显示,如果他们选择1 - 那么只显示产品A.
我尝试使用$ .grep进行过滤,但我遇到了通过数组值进行过滤的问题。让我们将用户文件管理器硬编码为所有值作为示例。
userFilterArray.Rating = [1, 2, 3];
function filter(ProductsList, userFilterArray)
filteredList = $.grep(ProductList, function(n) {
return (n.Rating == userFilterArray.Rating);
});
显然这不起作用,因为我将n.Rating作为字符串与数组进行比较,但我不确定在这种情况下如何将字符串与字符串进行比较。
grep是最简单的方法吗?我应该使用.each .each的组合吗?也许不是吗?
答案 0 :(得分:3)
经过一系列语法和其他修复,我认为这就是你所追求的:
var ProductsList = [
{"Name": "Product A", "Rating": 3},
{"Name": "Product B", "Rating": 2},
{"Name": "Product C", "Rating": 1}
];
var userFilterArray = [1, 3];
function filter(list, filterArr) {
return $.grep(list, function(obj) {
return $.inArray(obj.Rating, filterArr) !== -1;
});
}
var filteredList = filter(ProductsList, userFilterArray)
console.log( filteredList );