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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

根據(jù)來(lái)自另一個(gè)對(duì)象數(shù)組的多個(gè)值過(guò)濾對(duì)象數(shù)組

根據(jù)來(lái)自另一個(gè)對(duì)象數(shù)組的多個(gè)值過(guò)濾對(duì)象數(shù)組

qq_花開(kāi)花謝_0 2022-07-15 09:33:48
我有一個(gè)對(duì)象數(shù)組,c = [  {     name: 'abc',     category: 'cat1',     profitc: 'profit1',     costc: 'cost1'  },  {     name: 'xyz',     category: '',     profitc: 'profit1',     costc: ''  },  {     name: 'pqr',     category: 'cat1',     profitc: 'profit1',     costc: ''  }]現(xiàn)在我想根據(jù)另一個(gè)對(duì)象數(shù)組過(guò)濾數(shù)組,第二個(gè)對(duì)象數(shù)組是,arr = [ {   type:'profitc'   value: 'profit1', }, {   type:'category'   value: 'cat1', }]現(xiàn)在 arr 顯示在帶有多個(gè)選擇選項(xiàng)的下拉列表中,并且對(duì)象中的鍵值的值顯示給用戶,即利潤(rùn) 1、cat1 等。因此,如果用戶選擇profit1and cat1,那么我需要過(guò)濾數(shù)組c,這樣,輸出看起來(lái)像這樣。c = [  {     name: 'abc',     category: 'cat1',     profitc: 'profit1',     costc: 'cost1'  },  {     name: 'pqr',     category: 'cat1',     profitc: 'profit1',     costc: ''  }]我試著這樣做。let result = c.filter(e => {  let istruecat = true//arr is chosen value from user.  arr.forEach(element => {    istruecat = e[element.type] == element.value;  })  return istruecat;})但是當(dāng)我這樣做時(shí),我會(huì)從c數(shù)組中獲取所有對(duì)象。我在這里做錯(cuò)了什么?有沒(méi)有辦法使用 lodash.
查看完整描述

4 回答

?
DIEA

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超3個(gè)贊

您可以通過(guò)使用數(shù)據(jù)對(duì)象檢查所有給定的鍵/值對(duì)來(lái)過(guò)濾數(shù)組。


var data = [{ name: 'abc', category: 'cat1', profitc: 'profit1', costc: 'cost1' }, { name: 'xyz', category: '', profitc: 'profit1', costc: '' }, { name: 'pqr', category: 'cat1', profitc: 'profit1', costc: '' }],

    filters = [{ type: 'profitc', value: 'profit1', }, { type: 'category', value: 'cat1' }],

    result = data.filter(o => filters.every(({ type, value }) => o[type] === value));


console.log(result);

.as-console-wrapper { max-height: 100% !important; top: 0; }


查看完整回答
反對(duì) 回復(fù) 2022-07-15
?
回首憶惘然

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超11個(gè)贊

-您istruecat僅根據(jù)arr. 您應(yīng)該使用 reduce 來(lái)累積值:


let result = c.filter(e => arr.reduce((acc, element) => acc && e[element.type] === element.value, true))


查看完整回答
反對(duì) 回復(fù) 2022-07-15
?
HUX布斯

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊

這是c通過(guò)過(guò)濾器數(shù)組根據(jù)給定值減少列表的實(shí)現(xiàn)arr。請(qǐng)注意,輸出是基于 中的初始內(nèi)容的新列表c。


result = arr.reduce((acc, curr) => {

    acc = acc.filter(item => {

        return item[curr.type] === curr.value;

    });


    return acc;

}, c);


查看完整回答
反對(duì) 回復(fù) 2022-07-15
?
FFIVE

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊

或者一個(gè)遞歸和imo可讀的解決方案:


function myFilter(c, [first, ...rest]) {

    if (first) {

        const {type, value} = first;

        // Recursively call myFilter with one filter removed

        return myFilter(c, rest)

           .filter(x => x[type] === value);

    } else {

        // Nothing left to filter

        return c;

    }

}


myFilter(c, arr);


查看完整回答
反對(duì) 回復(fù) 2022-07-15
  • 4 回答
  • 0 關(guān)注
  • 192 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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