陣列去重的場景
將陣列var arr =[1,1,‘true’,‘true’,true,true,66,66,false,false,undefined,undefined, null,null, NaN, NaN, 0, 0, ‘a’, ‘a’,{},{}]中重復的值過濾掉
1、ES6-set
使用ES6中的set是最簡單的去重方法
<script>
var arr=[1,2,3,4,1,2,3]
//先將陣列轉換為set
var set=new Set(arr)
//再將set轉換為陣列
console.log(Array.from(set))
</script>
2、利用Map資料結構去重
創建一個空Map資料結構,遍歷需要去重的陣列,把陣列的每一個元素作為key存到Map中,由于Map中不會出現相同的key值,所以最終得到的就是去重后的結果
function shuzu(arr) {
let map = new Map();
let array = new Array(); // 陣列用于回傳結果
for (let i = 0; i < arr.length; i++) {
if(map .has(arr[i])) { // 如果有該key值
map .set(arr[i], true);
} else {
map .set(arr[i], false); // 如果沒有該key值
array .push(arr[i]);
}
}
return array ;
}
3、 嵌套回圈+splice
function shuzu(arr){
for(var i = 0 ; i < arr.length; i++){
for( var j = i + 1; j < arr.length; j++){
if( arr[i] === arr[j] ){
arr.splice(j,1);
}
}
}
return arr;
}
4、 forEach + indexOf
function shuzu(arr){
var res = [];
arr.forEach((val,index)=>{
if( res.indexOf(val) === -1 ){
res.push(val);
}
});
return res;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/341906.html
標籤:其他
下一篇:javascript中的陣列方法
