JS實現陣列去重及陣列內物件去重(es5和es6)

2021-09-25 07:22:56 字數 1372 閱讀 3106

寫專案的時候一定遇到過這種邏輯需求,就是給乙個陣列進行去重處理,還有一種就是給陣列內的物件根據某乙個屬性,比如id,進行去重,下面的兩個函式,都是可以達到這個效果的,乙個是純es5的去重辦法,乙個是用了es6的array.from(new set())和es5的reduce來進行去重。

下面先定義兩個陣列:

var arr =[3

,5,1

,1,4

,5,3

,true

,'test'

,'test'];

var people =[,

,,,,

];

es5版本:

//es5原生去重辦法

function

es5duplicate

(arr, type)

else

}return newarr;

}else

}return newarr;}}

}console.

log(

'es5去重'

,es5duplicate

(arr));

console.

log(

'es5去重'

,es5duplicate

(people,

"name"))

;//根據name進行去重

es6+es5去重:

//es6 + es5去重辦法

function

es6duplicate

(arr, type)

else

var newarr = arr.

reduce

((cur, next)

=>,[

])return newarr;

}else}}

console.

log(

'es6去重'

,es6duplicate

(arr));

console.

log(

'es6去重'

,es6duplicate

(people,

"name"))

;//根據name進行去重

列印結果:

看起來好像是第二種辦法**量要小一些,但是第乙個通用,相容性特別好,第二個因為牽扯到了es6新特性,所以還是要考慮一下相容性,但是如果你要是在vue-cli初始化生成的專案,可以隨便用es6的新特性,它自動轉譯了。

參考:

js陣列去重以及陣列內物件去重

大家在寫專案的時候一定遇到過這種邏輯需求,就是給乙個陣列進行去重處理,還有一種就是給陣列內的物件根據某乙個屬性,比如id,進行去重,下面我寫了兩個函式,都是可以達到這個效果的,乙個是純es5的去重辦法,乙個是用了es6的array.from new set 和es5的reduce來進行去重 我先定義...

JS陣列去重,物件去重

例項1根據indexof去重,indexof的好處就是返回的是首次出現的位置,這樣後面即使出現的值一樣,也只能返回第一次出現的索引,當然這個只適用於簡單的陣列 物件陣列去重 const objarr const obj const newobjarr for let i 0 i objarr.len...

陣列去重之陣列內物件去重 其一

toup 通常會想到的方法是,用for 迴圈遍歷,用foreach 這樣的思路是對的,至少大方向沒錯。宣告乙個空陣列,用於存放新內容。宣告乙個空物件,用於做判斷。export default this toup.push 將每一題的題號 題目 選項 加到陣列toup中提交。for let i 0 i...