function where(collection, source) {
var arr = [];
var sProp=Object.keys(source);//獲取第二個參數key
arr=collection.filter(function(v){
for(var i=0;i<sProp.length;i++){//由於屬性可能不止一個,所以需要遍歷
if(v[sProp[i]]!==source[sProp[i]]){//篩選出不符合條件的
return false;
}
}
return true;
});
return arr;
}
filter 語法:
var new_array = arr.filter(callback[, thisArg])
filter 爲數組中的每個元素調用一次 callback 函數,並利用所有使得
callback 返回 true 或 等價於 true 的值 的元素創建一個新數組。
callback 只會在已經賦值的索引上被調用,對於那些已經被刪除或者從未被賦值的索引不會被調用。
那些沒有通過 callback 測試的元素會被跳過,不會被包含在新數組中。