JS合並數組對象中key相同的數據(將數組里某個屬性相同的對象合並成一個數組)兩種方案


將數組里某個屬性相同的對象合並成一個數組

原數組如下

let resData = [ { "name": "住院醫療最高報銷", "tagName": "醫療", "insuredAmount": "6000" }, { "name": "身故賠付", "tagName": "壽險", "insuredAmount": "36.00" }, { "name": "煩死了免費陳述事實", "tagName": "壽險", "insuredAmount": "8888.00" }, { "name": "你好,嚕嚕嚕", "tagName": "壽險", "insuredAmount": "66.00" }, { "name": "120種重大疾病確診賠付", "tagName": "重疾", "insuredAmount": "350000" } ] 

需求是,轉成如下數組
也就是將具有相同“tagName”的對象合並成新數組

let Data = [ { "tagName": "醫療", dataInfo: [ { "name": "住院醫療最高報銷", "tagName": "醫療", "insuredAmount": "6000" } ] }, { "tagName": "壽險", dataInfo: [ { "name": "身故賠付", "tagName": "壽險", "insuredAmount": "36.00" }, { "name": "煩死了免費陳述事實", "tagName": "壽險", "insuredAmount": "8888.00" }, { "name": "你好,嚕嚕嚕", "tagName": "壽險", "insuredAmount": "66.00" }, ] }, { "tagName": "重疾", dataInfo: [ { "name": "120種重大疾病確診賠付", "tagName": "重疾", "insuredAmount": "350000" } ] } ] 

以下是解決方案
方案一:

let tempArr = []; let Data = []; for (let i = 0; i < resData.length; i++) { if (tempArr.indexOf(resData[i].tagName) === -1) { Data.push({ tagName: resData[i].tagName, dataInfo: [resData[i]] }); tempArr.push(resData[i].tagName); } else { for (let j = 0; j < Data.length; j++) { if (Data[j].tagName == resData[i].tagName) { Data[j].dataInfo.push(resData[i]); break; } } } } console.log(Data); 

 方案二:

let dataInfo = {}; resData.forEach((item, index) => { let { tagName } = item; if (!dataInfo[tagName]) { dataInfo[tagName] = { tagName, child: [] } } dataInfo[tagName].child.push(item); }); let list = Object.values(dataInfo); // list 轉換成功的數據 console.log(list) 

以上方法綜合借鑒了其他博主的文章,總結以供大家一起學習!

 

轉自於:https://blog.csdn.net/shiningyn/article/details/105409636


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM