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

2021-08-21 10:16:21 字數 1426 閱讀 9411

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

我先定義兩個陣列吧

var arr =[1

,2,3

,5,3

,4,5

,6,6

,"test"

,"test"

,true];

var person =[,

,,,]

;

####es5版本:

//es5原生去重辦法

function

es5duplicate

(arr,type)

else

}return newarr;

}else

}return newarr;}}

} console.

log(

'es5去重'

,es5duplicate

(arr)

);

console.

log(

'es5去重'

,es5duplicate

(person,

"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

(person,

"name"))

;

看下結果

看起來好像是第二種辦法**量要小一些,但是第乙個通用,相容性特別好,第二個因為牽扯到了es6新特性,所以還是要考慮一下相容性,但是如果你要是在vue-cli初始化生成的專案,可以隨便用es6的新特性,他自動轉譯了,我自己搭建了乙個demo,試了好多新特性,ie9+都有效果(本身vue就不支援ie8及以下,所以ie9以下沒辦法實驗)

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...

js 陣列物件去重

var arr 方法1 利用物件訪問屬性的方法,判斷物件中是否存在key var result var obj for var i 0 i const result const obj for let i 0 i data.length i console.log result result con...