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