亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

如何根據javascript中的動態值過濾數組

如何根據javascript中的動態值過濾數組

達令說 2021-08-20 17:04:23
我想根據動態值(名稱和部分)過濾下面給出的數組。var allResponse = [{  "name": "ABC",  "class": "8",  "section": "A",},{  "name": "DEF",  "class": "7",  "section": "B",},{  "name": "ABC",  "class": "8",  "section": "D",},]name 和 section 的這些值,我正在單擊復選框?;谶@些值,我想過濾這個給定的數組allResponse。值可以是多個,例如:過濾名稱為 ABC 且部分為 A 和 D的數組,就像在獲得價值之后,我嘗試創建一個對象來過濾,如下面給出的那樣進行迭代過濾。但是做不到var filterLiterals= [{"name": "ABC"},{"section": "A"},{"section": "D"}];orvar filterLiterals= ["ABC","A","D"];所以結果應該是{  "name": "ABC",  "class": "8",  "section": "A",},我很困惑應該遵循哪種方法來獲得結果。我嘗試使用 || 和 && 運算符,但無法得到我想要的結果。任何人都可以建議我采用合適和正確的方法來過濾這個數組。我做不到。是否可以以任何方式在javascript中以這種方式過濾......?
查看完整描述

3 回答

?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

根據我的理解,我需要在下面找到滿足的元素,


名稱:ABC 部分:A 或 D


var allResponse = [

    {

        "name": "ABC",

        "class": "8",

        "section": "A",

    },

    {

        "name": "DEF",

        "class": "7",

        "section": "B",

    },

    {

        "name": "ABC",

        "class": "8",

        "section": "D",

    },  

];


var filterLiterals = [

    {"name": "ABC"},

    {"section": "A"},

    {"section": "D"}

];


const parsed = filterLiterals.reduce((acc, obj) => {

    const key = Object.keys(obj)[0];

    if (typeof acc[key] === 'undefined')

        acc[key] = [obj[key]];

    else 

        acc[key].push(obj[key]);

    return acc;

}, {});


//console.log("parsed: ", parsed);


var answer = allResponse.filter(obj => {

    let flag = true;

    for (const key of Object.keys(parsed)) {

        if (!parsed[key].includes(obj[key])) {

            flag = false;

            break;

        }

    }

    return flag;

});


console.log(answer);


查看完整回答
反對 回復 2021-08-20
  • 3 回答
  • 0 關注
  • 187 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號