js合并數(shù)組對象代碼實現(xiàn)(將數(shù)組中具有相同屬性對象合并到一起組成一個新數(shù)組)
更新時間:2024年01月24日 16:19:10 作者:smileAgain-lg
項目過程中經(jīng)常會遇到JS數(shù)組合并的情況,時常為這個糾結(jié),這篇文章主要給大家介紹了關(guān)于js合并數(shù)組對象(將數(shù)組中具有相同屬性對象合并到一起組成一個新數(shù)組)的相關(guān)資料,需要的朋友可以參考下
一、根據(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.實現(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.實現(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.實現(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ù)組對象代碼實現(xiàn)的文章就介紹到這了,更多相關(guān)js合并數(shù)組對象內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Javascript中內(nèi)建函數(shù)reduce的應(yīng)用詳解
內(nèi)建函數(shù)其實就是內(nèi)置函數(shù),reduce函數(shù)是ECMAScript5規(guī)范中出現(xiàn)的數(shù)組方法。在平時的工作中,相信大家使用的場景并不多,這篇文章給大家詳細(xì)介紹了函數(shù)reduce的應(yīng)用以及多重疊加,有需要的朋友們可以參考借鑒,下面來一起看看吧。2016-10-10js如何去除數(shù)組中的empty?undefined空項
這篇文章主要介紹了js如何去除數(shù)組中的empty?undefined空項,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-08-08BootStrap Fileinput插件和Bootstrap table表格插件相結(jié)合實現(xiàn)文件上傳、預(yù)覽、提交的導(dǎo)入E
這篇文章主要介紹了BootStrap Fileinput插件和Bootstrap table表格插件相結(jié)合實現(xiàn)文件上傳、預(yù)覽、提交的導(dǎo)入Excel數(shù)據(jù)操作步驟,需要的朋友可以參考下2017-08-08