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

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

如何使用節(jié)點js中的鍵對兩個數(shù)組進行分組

如何使用節(jié)點js中的鍵對兩個數(shù)組進行分組

肥皂起泡泡 2022-05-22 16:18:01
我有以下兩個要合并的對象。[    {        "response_code": 1,        "response_message": [{            "a": 1000,            "b": 1000001,            "c": 10000002        }]    }][    {        "response_code": 1,        "response_message": [{            "a": 2000,            "b": 2000001,            "c": 20000002        }]    }]我想通過只有一個響應(yīng)代碼值和如下方式合并響應(yīng)消息值來合并它們,如下所示。{    "response_code": 1,    "response_message": [    {        "a": 1000,        "b": 1000001,        "c": 10000002    },    {        "a": 2000,        "b": 2000001,        "c": 20000002    }]}真的堅持如此復(fù)雜的合并,我只想要一次響應(yīng)代碼的值并合并響應(yīng)消息的值。在這里,我想從其他數(shù)組中刪除響應(yīng)代碼值,并將響應(yīng)消息值與第一個數(shù)組合并/分組。
查看完整描述

3 回答

?
qq_遁去的一_1

TA貢獻1725條經(jīng)驗 獲得超8個贊

我為你準備了一個小功能:


根據(jù)您在評論中提出的問題,連同response_message字符串的測試用例,我編輯了代碼片段以包含多個要測試的用例。


const inputs = [

    [{

            "response_code": 1,

            "response_message": [{

                "a": 1000,

                "b": 1000001,

                "c": 10000002

            }]

        },


        {

            "response_code": 1,

            "response_message": [{

                "p": 1000,

                "q": 1000001,

                "r": 10000002

            }]

        }

    ],

    [{

            "response_code": 1,

            "response_message": [{

                "a": 1000,

                "b": 1000001,

                "c": 10000002

            }]

        },

        {

            "response_code": 1,

            "response_message": 'No data'

        }

    ],

    [{

            "response_code": 1,

            "response_message": 'No data'

        },

        {

            "response_code": 1,

            "response_message": 'No data'

        }

    ]


]


const getGroupedArr = (arr) => {

    const codeMap = arr.reduce((cMap,obj) => {

        let existingMessageArr = cMap.get(obj.response_code);

        let arrayToAdd = Array.isArray(obj.response_message) ? obj.response_message : [];

        if(existingMessageArr){

            existingMessageArr.push(...arrayToAdd);

        } else {

            cMap.set(obj.response_code,arrayToAdd);

        }

        return cMap;

    },new Map());

    const iterator = codeMap[Symbol.iterator]();

    const resultArr = [];

    for (let item of iterator) {

        resultArr.push({

            response_code: item[0],

            response_message: item[1]

        })

    }

    return resultArr;

}


inputs.forEach((inputArr,index) => {

    console.log(`Result for input ${index+1}`,getGroupedArr(inputArr));

})


請注意,我Map在 JS 中使用了大多數(shù)人更喜歡對象的位置,因為 JS 中的映射是可迭代的,但是對于一個對象,我不得不做一個額外的Object.keys()步驟,所以這使得它比對象方法稍微更有效,雖然有點冗長.


另請注意,在第三種情況下,當具有特定對象的對象沒有response_code任何數(shù)據(jù)時,結(jié)果將是一個空數(shù)組而不是字符串。在像 JS 這樣的弱類型環(huán)境中,保持某種類型一致性始終是一個好習(xí)慣(這實際上使得 'No data' 的輸入值response_code并不理想),否則您可能需要在任何地方進行類型檢查(比如在編輯的函數(shù)中)在上面的片段中)。


當具有相同的對象response_code存在于兩個不同的數(shù)組中時(兩個輸入數(shù)組可以簡單地合并為一個),可以在評論中提到的約束中使用相同的函數(shù):


const inputArr1 = [{

            "response_code": 1,

            "response_message": [{

                "a": 1000,

                "b": 1000001,

                "c": 10000002

            }]

        }]


const inputArr2 = [{

            "response_code": 1,

            "response_message": [{

                "p": 1000,

                "q": 1000001,

                "r": 10000002

            }]

        }]


const getGroupedArr = (arr) => {

    const codeMap = arr.reduce((cMap,obj) => {

        let existingMessageArr = cMap.get(obj.response_code);

        let arrayToAdd = Array.isArray(obj.response_message) ? obj.response_message : [];

        if(existingMessageArr){

            existingMessageArr.push(...arrayToAdd);

        } else {

            cMap.set(obj.response_code,arrayToAdd);

        }

        return cMap;

    },new Map());

    const iterator = codeMap[Symbol.iterator]();

    const resultArr = [];

    for (let item of iterator) {

        resultArr.push({

            response_code: item[0],

            response_message: item[1]

        })

    }

    return resultArr;

}



console.log(getGroupedArr([...inputArr1,...inputArr2]));


查看完整回答
反對 回復(fù) 2022-05-22
?
小唯快跑啊

TA貢獻1863條經(jīng)驗 獲得超2個贊

我已經(jīng)通過下面的代碼解決了數(shù)組合并問題。


      const mergedArray = [];

      myarray.forEach((obj, index) => {

        var newObj = {}

        if(index > 0){

          if(mergedArray.length > 0){

            for(let i=0; i<obj.response_message.length;i++){

              mergedArray[0].response_message.push(obj.response_message[i]);

            }

          }

        }else{

          newObj["response_code"] = obj.response_code ;

          newObj["response_message"] =  obj.response_message;

          mergedArray.push(newObj);

             }

      })


查看完整回答
反對 回復(fù) 2022-05-22
?
POPMUISE

TA貢獻1765條經(jīng)驗 獲得超5個贊

   const arrayOf0 = yourArray.filter(item => item.response_code===0)

    const arrayOf1 = yourArray.filter(item => item.response_code===1)

    const merged0 = {response_code: 0, response_message: []};

    const merged1 = {response_code: 1, response_message: []};

    arrayOf0.forEach(item => { 

merged0.response_message.push(item.response_message[0]

}) 

    arrayOf1.forEach(item => {

 merged1.response_message.push(item.response_message[0]

})

像這樣的東西?


查看完整回答
反對 回復(fù) 2022-05-22
  • 3 回答
  • 0 關(guān)注
  • 175 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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