js合并數(shù)組對象代碼實(shí)現(xiàn)(將數(shù)組中具有相同屬性對象合并到一起組成一個新數(shù)組)
一、根據(jù)數(shù)組對象中某一key值,合并相同key值的字段,到同一個數(shù)組對象中,組成新的數(shù)組
1.原數(shù)組:
var array = [ { id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }, { id: 1, age: 25 }, { id: 3, name: 'Charlie', age: 30 } ];
2.合并后數(shù)組:
var array = [ { id: 1, name: 'Alice', age: 25 }, { id: 2, name: 'Bob' }, { id: 3, name: 'Charlie', age: 30 } ];
3.實(shí)現(xiàn)方法:
// 原始數(shù)組 var array = [ { id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }, { id: 1, age: 25 }, { id: 3, name: 'Charlie', age: 30 } ]; // 使用 reduce 方法合并具有相同屬性的對象 var mergedArray = array.reduce(function(result, obj) { var target = result.find(function(item) { return item.id === obj.id; }); if (target) { Object.assign(target, obj); } else { result.push(obj); } return result; }, []); console.log(mergedArray);
4.測試:
二、根據(jù)數(shù)組對象中某一key值,合并相同key值的對象,到同一個對象中,組成新的數(shù)組
1.原數(shù)組:
let list = [ { name: "張三", gender: "張", age: "20" }, { name: "李四", gender: "李", age: "25" }, { name: "王五", gender: "王", age: "30" }, { name: "張飛", gender: "張", age: "20" }, { name: "李紅", gender: "李", age: "22" } ]
2.合并后數(shù)組:
let list = [ { gender: "張", { name: "張三", gender: "張", age: "20" }, { name: "張飛", gender: "張", age: "20" } }, { gender: "李", { name: "李四", gender: "李", age: "25" }, { name: "李紅", gender: "李", age: "22" } }, { gender: "王", { name: "王五", gender: "王", age: "30" }, } ]
3.實(shí)現(xiàn)方法一:
let tempArr = []; let Data = []; for (let i = 0; i < list.length; i++) { if (tempArr.indexOf(list[i].gender) === -1) { Data.push({ gender: list[i].gender, dataInfo: [list[i]] }); tempArr.push(list[i].gender); } else { for (let j = 0; j < Data.length; j++) { if (Data[j].gender== list[i].gender) { Data[j].dataInfo.push(list[i]); break; } } } } console.log(Data);
測試:
4.實(shí)現(xiàn)方法二:
let dataInfo = {}; list.forEach((item, index) => { let { gender } = item; if (!dataInfo[gender]) { dataInfo[gender] = { gender, child: [] } } dataInfo[gender].child.push(item); }); let newList = Object.values(dataInfo); // list 轉(zhuǎn)換成功的數(shù)據(jù) console.log(newList)
測試:
總結(jié)
到此這篇關(guān)于js合并數(shù)組對象代碼實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)js合并數(shù)組對象內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Javascript中內(nèi)建函數(shù)reduce的應(yīng)用詳解
內(nèi)建函數(shù)其實(shí)就是內(nèi)置函數(shù),reduce函數(shù)是ECMAScript5規(guī)范中出現(xiàn)的數(shù)組方法。在平時的工作中,相信大家使用的場景并不多,這篇文章給大家詳細(xì)介紹了函數(shù)reduce的應(yīng)用以及多重疊加,有需要的朋友們可以參考借鑒,下面來一起看看吧。2016-10-10帝國cms首頁列表頁實(shí)現(xiàn)點(diǎn)贊功能
這篇文章主要介紹了帝國cms首頁列表頁實(shí)現(xiàn)點(diǎn)贊功能的相關(guān)資料,需要的朋友可以參考下2017-10-10js如何去除數(shù)組中的empty?undefined空項(xiàng)
這篇文章主要介紹了js如何去除數(shù)組中的empty?undefined空項(xiàng),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08基于Echarts實(shí)現(xiàn)繪制立體柱狀圖的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何基于Echarts實(shí)現(xiàn)繪制立體柱狀圖的功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,需要的可以參考一下2023-02-02BootStrap Fileinput插件和Bootstrap table表格插件相結(jié)合實(shí)現(xiàn)文件上傳、預(yù)覽、提交的導(dǎo)入E
這篇文章主要介紹了BootStrap Fileinput插件和Bootstrap table表格插件相結(jié)合實(shí)現(xiàn)文件上傳、預(yù)覽、提交的導(dǎo)入Excel數(shù)據(jù)操作步驟,需要的朋友可以參考下2017-08-08