第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

js怎么實現(xiàn)多條件篩選出符合的數(shù)據(jù)(仿sql多字段查找)

js怎么實現(xiàn)多條件篩選出符合的數(shù)據(jù)(仿sql多字段查找)

HUWWW 2019-03-07 18:13:58
var conditionArr=[{        name:'廣州',        type:'area'    },{        name:'一本',        type:'batch'    }];    var dataArr=[{        name:'廣州大學(xué)1',        area:'廣州',        batch:'一本'    },{        name:'廣州大學(xué)2',        area:'廣州',        batch:'一本'    },{        name:'廣州大學(xué)3',        area:'深圳',        batch:'一本'    },{        name:'廣州大學(xué)4',        area:'深圳',        batch:'二本'    },{        name:'廣州大學(xué)5',        area:'廣州',        batch:'二本'    },{        name:'廣州大學(xué)6',        area:'廣州',        batch:'二本'    }];    // conditionArr是篩選的條件(動態(tài)變化的),當(dāng)conditionArr多一個數(shù)組時,dataArr中的每個對象就會多一個屬性【此處簡化屬性,剛開始就有對應(yīng)值】    var temp=[];    for(var i=0;i<dataArr.length;i++){        for(var j=0;j<conditionArr.length;j++){            if (dataArr[i][conditionArr[j].type] === conditionArr[j].name){                temp.push(schoolList[i]);            }        }    }    // 當(dāng)conditionArr一個數(shù)組(一個條件)時沒有問題,兩個以上就是疊加數(shù)據(jù)了    console.log(temp);
查看完整描述

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


查看完整回答
反對 回復(fù) 2019-03-18
?
米琪卡哇伊

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 進行一次過濾即可。


查看完整回答
反對 回復(fù) 2019-03-18
  • 3 回答
  • 0 關(guān)注
  • 1813 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號