js陣列去重六法

2021-08-30 15:23:46 字數 2069 閱讀 8034

方法一:

雙層迴圈,外層迴圈元素,內層迴圈時比較值,如果有相同的值則跳過,不相同則push進陣列

array.prototype.distinct = function()

}  result.push(arr[i]);

} return result;

}var arra = [1,2,3,4,4,1,1,2,1,1,1];

arra.distinct();    //返回[3,4,2,1]

方法二:利用splice直接在原陣列進行操作

值相同時,則刪去這個值

注意點:刪除元素之後,需要將陣列的長度也減1.

array.prototype.distinct = function ()

} }return arr;

};var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,];

var b = a.distinct();

console.log(b.tostring()); //1,2,3,4,5,6,56

缺點:占用記憶體高,速度慢

優點:簡單易懂

方法三:利用物件的屬性不能相同的特點進行去重

array.prototype.distinct = function (),

result = ,

len = arr.length;

for(i = 0; i< arr.length; i++)

} return result;

};var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1];

var b = a.distinct();

console.log(b.tostring()); //1,2,3,4,5,6,56

方法四:陣列遞迴去重

運用遞迴的思想先排序,然後從最後開始比較,遇到相同,則刪除

array.prototype.distinct = function ())

function loop(index)

loop(index - 1); //遞迴loop函式進行去重

} }loop(len-1);

return arr;

};var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,56,45,56];

var b = a.distinct();

console.log(b.tostring());  //1,2,3,4,5,6,45,56

方法五:利用indexof以及foreach

array.prototype.distinct = function ()

}) return result;

};var a = [1,1,2,2,3,2,3,3,2,2,1,23,1,23,2,3,2,3,2,3];

var b = a.distinct();

console.log(b.tostring()); //1,23,2,3

方法六:利用es6的set

set資料結構,它類似於陣列,其成員的值都是唯一的。

new set(array)將利用array.from將set結構轉換成陣列

function dedupe(array)

dedupe([1,1,2,3]) //[1,2,3]

拓展運算子(...)內部使用for...of迴圈

let arr = [1,2,3,3];

let resultarr = [...new set(arr)];

console.log(resultarr); //[1,2,3]

推薦[...newset(arr)]這種寫法,簡單快捷。

心理快樂六法

精神勝利法 這是一種有益身心健康的心埋防衛機制。在你的事業 愛情 婚姻不盡人意時,在你因經濟上得不到合理的對待而傷感時,在你無端遭到人身攻擊時或不公正的評價而氣惱時,在你因生理缺陷遭到嘲笑而寡歡時,你不防用阿q的精神調適一下你失衡的心理,營造乙個祥和 豁達 坦然的心理氛圍。難得糊塗法 這是心理環境免...

JS陣列去重,物件去重

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

js 陣列去重

function unique arr if isrepeated return result 建立乙個新的陣列,迴圈原有的陣列,每取乙個數就迴圈判斷新建的陣列中是否有和這個相等的值,沒有則插入。方法簡單,但是有雙重迴圈,陣列大了之後效率低。所以能一次迴圈解決最好。var str new array...