2012-01-16 74 views
2

嘗試查看一個數組中的數據是否與另一個數組中的數據匹配。我有對象的數組,像這樣 -

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組合嗎?也許都不是?

回答

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); 

DEMO:http://jsfiddle.net/vK6N9/

相關問題