JS一級(jí)數(shù)組和數(shù)組對(duì)象合并去重方法實(shí)例
一級(jí)數(shù)組
方法一 使用 es6 的 Set 和 Array.from 方法
let arr1 = [1, 2, 3, 4, 5, 6, 2, 3] let arr2 = [1, 2, 3, 4, 5, 6, 5, 6] let result = Array.from(new Set([...arr1, ...arr2])) console.log(result) // [1, 2, 3, 4, 5, 6]
方法二 使用 indexOf 方法
let arr1 = [1, 2, 3, 4, 5, 6, 2, 3] let arr2 = [1, 2, 3, 4, 5, 6, 5, 6] let arr3 = arr1.concat(arr2) function uniqueFun(arr) { const newArr = [] for (let i = 0; i < arr.length; i++) { if (newArr.indexOf(arr[i]) == -1) { newArr.push(arr[i]) } } return newArr } console.log(uniqueFun(arr3)) // [1, 2, 3, 4, 5, 6]
方法三 使用 includes 方法
let arr1 = [1, 2, 3, 4, 5, 6, 2, 3] let arr2 = [1, 2, 3, 4, 5, 6, 5, 6] let arr3 = arr1.concat(arr2) function uniqueFun(arr) { const newArr = [] for (let i = 0; i < arr.length; i++) { if (!newArr.includes(arr[i])) { newArr.push(arr[i]) } } return newArr } console.log(uniqueFun(arr3)) // [1, 2, 3, 4, 5, 6]
方法四 使用 filter 方法
let arr1 = [1, 2, 3, 4, 5, 6, 2, 3] let arr2 = [1, 2, 3, 4, 5, 6, 5, 6] let arr3 = arr1.concat(arr2) // [1, 2, 3, 4, 5, 6, 2, 3, 1, 2, 3, 4, 5, 6, 5, 6] function uniqueFun(arr) { return arr.filter((item, index, arr) => { return arr.indexOf(item) == index // 返回當(dāng)前元素在原始數(shù)組的索引值 == 當(dāng)前索引值的元素 }) } conosle.log(uniqueFun(arr3)) // [1, 2, 3, 4, 5, 6]
方法五 使用 es6 Map
let arr1 = [1, 2, 3, 4, 5, 6, 2, 3] let arr2 = [1, 2, 3, 4, 5, 6, 5, 6] let arr3 = arr1.concat(arr2) function uniqueFun(arr) { let map = new Map() return arr.filter(item => { return !map.has(item) && map.set(item, 1) }) } console.log(uniqueFun(arr3)) // [1, 2, 3, 4, 5, 6]
數(shù)組對(duì)象
方法一 使用擴(kuò)展運(yùn)算符(...), filter 和 Map
let arr1 = [{id: 1, name: '小明'}, {id: 2, name: '小紅'}, {id: 4, name: '小劉'}] let arr2 = [{id: 1, name: '小明'}, {id: 2, name: '小紅'}, {id: 3, name: '小王'}] let arr3 = [...arr1, ...arr2] function uniqueFun(arr) { const map = new Map() return arr.filter(item => { return !map.has(item.id) && map.set(item.id, 1) }) } console.log(uniqueFun(arr3)) // 輸出 [{id: 1, name: '小明}, {id: 2, name: '小紅'}, {id: 4, name: '小劉'}, {id: 3, name: '小王'}]
方法二 使用擴(kuò)展運(yùn)算符(...), filter 和對(duì)象字面量 {}
let arr1 = [{id: 1, name: '小明'}, {id: 2, name: '小紅'}, {id: 4, name: '小劉'}] let arr2 = [{id: 1, name: '小明'}, {id: 2, name: '小紅'}, {id: 3, name: '小王'}] let arr3 = [...arr1, ...arr2] function uniqueFun(arr) { const obj = {} return arr.filter(item => { return !obj.hasOwnProperty(item.id) && (obj[item.id] = 1) }) } console.log(uniqueFun(arr3)) // 輸出 [{id: 1, name: '小明}, {id: 2, name: '小紅'}, {id: 4, name: '小劉'}, {id: 3, name: '小王'}]
方法三 使用concat, reduce 和 find
let arr1 = [{id: 1, name: '小明'}, {id: 2, name: '小紅'}, {id: 4, name: '小劉'}] let arr2 = [{id: 1, name: '小明'}, {id: 2, name: '小紅'}, {id: 3, name: '小王'}] let arr3 = arr1.concat(arr2) function uniqueFun(arr) { return arr.reduce((pre, cur) => { if (!pre.find(item => item.id === cur.id)) { pre.push(cur) } return pre }, []) } console.log(uniqueFun(arr3)) // 輸出 [{id: 1, name: '小明}, {id: 2, name: '小紅'}, {id: 4, name: '小劉'}, {id: 3, name: '小王'}]
以上就是JS一級(jí)數(shù)組和數(shù)組對(duì)象合并去重方法實(shí)例的詳細(xì)內(nèi)容,更多關(guān)于JS一級(jí)數(shù)組數(shù)組對(duì)象合并去重的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
左右懸浮可分組的網(wǎng)站QQ在線客服代碼(可謂經(jīng)典)
QQ在線客服在每一個(gè)web開(kāi)發(fā)人員的記憶里都是一個(gè)經(jīng)典,既然是經(jīng)典,也就是必不可少,那就應(yīng)該很好的呈現(xiàn)出來(lái),本文整理了一些左右懸浮可分組的網(wǎng)站QQ在線客服代碼,需要的朋友可以了解下2012-12-12javascript簡(jiǎn)單實(shí)現(xiàn)表格行間隔顯示顏色并高亮顯示
表格行間隔顯示顏色并實(shí)現(xiàn)高亮顯示,這種效果大家都有見(jiàn)到過(guò)吧,下面就為大家詳細(xì)介紹下,需要的朋友可不要錯(cuò)過(guò)2013-11-11javascript?變量聲明?var,let,const?的區(qū)別
這篇文章主要介紹了javascript?變量聲明?var,let,const?的區(qū)別,變量聲明,每種編程語(yǔ)言必不可少的語(yǔ)法,在javascript中,變量的聲明相對(duì)其他語(yǔ)言來(lái)說(shuō),算是比較簡(jiǎn)單的。更多相關(guān)的具體內(nèi)容需要的小伙伴可以參考一下2022-06-06jstree中的checkbox默認(rèn)選中和隱藏示例代碼
這篇文章主要介紹了jstree的checkbox默認(rèn)選中和隱藏,需要的朋友可以參考下2019-12-12js仿京東輪播效果 選項(xiàng)卡套選項(xiàng)卡使用
這篇文章主要為大家詳細(xì)介紹了js仿京東輪播效果,選項(xiàng)卡里套選項(xiàng)卡,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01layui實(shí)現(xiàn)form表單同時(shí)提交數(shù)據(jù)和文件的代碼
今天小編就為大家分享一篇layui實(shí)現(xiàn)form表單同時(shí)提交數(shù)據(jù)和文件的代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10