大家在寫專案的時候一定遇到過這種邏輯需求,就是給乙個陣列進行去重處理,還有一種就是給陣列內的物件根據某乙個屬性,比如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...