3 回答

TA貢獻1796條經(jīng)驗 獲得超7個贊
var temp=[],bool;
for(var i=0;i<dataArr.length;i++){
bool = true
for(var j=0;j<conditionArr.length;j++){
if (dataArr[i][conditionArr[j].type] !== conditionArr[j].name){
bool = false;
}
}
bool && temp.push(dataArr[i])
}
console.log(temp);

TA貢獻1998條經(jīng)驗 獲得超6個贊
let result = dataArr.filter(data =>
conditionArr.map(condition => data[condition['type']] === condition['name']
.indexOf(false) === -1
)
// "[{"name":"廣州大學(xué)1","area":"廣州","batch":"一本"},
// {"name":"廣州大學(xué)2","area":"廣州","batch":"一本"}]"
內(nèi)部對條件數(shù)組進行一個映射:規(guī)則是 data[condition['type']] === condition['name']。
此時如果正在遍歷到
{
name:'廣州大學(xué)1',
area:'廣州',
batch:'一本'
}
conditionArr 就變成了:
[ true, true ]
如果是
{
name:'廣州大學(xué)3',
area:'深圳',
batch:'一本'
}
那么 conditionArr 就變成了:
[ false, true ]
所以只需要對每一個學(xué)校進行一次條件數(shù)組的映射,如果映射結(jié)果有 false,就說明有條件不滿足,反之就是滿足所有條件。
根據(jù)這個再對 dataArr 進行一次過濾即可。
添加回答
舉報