js數組去重方法 總結

使用indexOf()方法去除重複的元素

indexOf方法返回給定元素在數組中第一次出現的位置,返回結果是匹配開始的位置。若是沒有出現則返回-1web

var arr = [1,1,2,2,3,3,4,4];
var newArr = [];
for(var i=0,len=arr.length;i<len;i++){
if(newArr.indexOf(arr[i]) == -1){
newArr.push(arr[i]);
}
}
console.log(newArr);
使用lastIndexOf()方法去除重複的元素
  • lastIndexOf方法返回給定元素在數組中最後一次出現的位置,若是沒有出現則返回-1
  • lastIndexOf方法的用法跟indexOf方法一致,主要的區別lastIndexOf從尾部開始匹配,indexOf則是從頭部開始匹配
  • 另外,lastIndexOf的第二個參數表示從該位置起向前匹配
function noRepeat(arr) {
var res = [];
for (var i = 0; i < arr.length; i++) {
    res.lastIndexOf(arr[i]) !== -1 ? '' : res.push(arr[i]);
}
return res;
}
console.log(noRepeat([1, 1, 2, 2, 3, 3, 4, 4]));
使用filter()與indexOf()方法去除重複的元素
  • filter方法用於過濾數組成員,知足條件的成員組成一個新數組返回
  • 它的參數是一個函數,全部數組成員依次執行該函數,返回結果爲true的成員組成一個新數組返回
  • 該方法不會改變原數組
  • filter方法的參數函數能夠接受三個參數:當前成員,當前位置和整個數組
  • filter()去除重複元素依靠的是indexOf的屬性,即老是返回第一個元素的位置,後面的重複元素位置與indexOf返回的位置不相等,因此filter()能夠過濾掉它們
var arr = [1,1,2,2,3,3,4,4];
    var newArr = arr.filter(function(value,index,self){
    return self.indexOf(value) === index;
});
console.log(newArr)
使用ES6提供的Set結構去除重複的元素
  • 主要利用Set結構不能接收重複數據的特色
var arr = [1,1,2,2,3,3,4,4];
    function noRepeat(arr){
        var newArr = [];
        var myset = new Set(arr);
        for(var val of myset){
        newArr.push(val);
}
    return newArr;
}
var arr2 = noRepeat(arr);
console.log(arr2)
使用ES6提供的Set與擴展運算符去除重複的元素
var arr = [1,1,2,2,3,3,4,4];
function norepeat(arr) {
    let set = new Set(arr);
    arr = [...set];
    return arr;
}
console.log(norepeat(arr))
使用set與Array.from()方法去除重複的元素
  • Array.from方法能夠將 Set 結構轉爲數組
var arr = [1,2,2,2,3,3,4,4];
var newArr = Array.from(new Set(arr));
console.log(newArr);
使用splice()方法與雙層循環去除重複的元素
  1. splice()方法用於刪除原數組的一部分紅員,並能夠在刪除的位置添加新的數組成員,返回值是被刪除的元素
var arr = [1,1,2,2,3,3,4,4];
function noRepeat(arr){
    for (var i = 0; i < arr.length; i++) {
        for (var j = 0; j < arr.length; j++) {
            if (arr[i] == arr[j] && i != j) {
                arr.splice(j, 1);
            }
        }
    }
    return arr;
}
var arr2  = noRepeat(arr);
console.log(arr2)
使用includes()方法去除重複的元素
  • includes()方法用於判斷字符串是否包含指定的子字符串,若是找到匹配的字符則返回true,不然返回false。
function noRepeat(arr) {
    var newArr = [];
    for (var i = 0; i < arr.length; i++) {
        if (!newArr.includes(arr[i])) {
            newArr.push(arr[i]);
        }
    }
    return newArr;
}
console.log(noRepeat([1,1,2,2,3,3,4,4]))
使用forEach()和includes()方法去除重複的元素
  • forEach方法是對數組的全部成員依次執行參數函數。可是,forEach方法不返回值,只用來操做數據
  • forEach的參數是一個函數,該函數一樣接受三個參數:當前值、當前位置、整個數組
function noRepeat(arr) {
    var newArr = [];
    arr.forEach(item => {
        return newArr.includes(item) ? '' : newArr.push(item)
    });
    return newArr;
}
console.log(noRepeat([1,1,2,2,3,3,4,4]));
利用空對象來記錄新數組中已經存儲過的元素
var arr = [1,1,2,2,3,3,4,4];
var obj={};
var newArr=[];
for(var i=0;i<arr.length;i++){
    if(!obj[arr[i]]){
        obj[arr[i]]=true;
        newArr.push(arr[i]);
    }
}
console.log(newArr);
使用sort()方法去除重複的元素
  1. 使用sort()方法先將原數組排序,而後與相鄰的進行比較,若是不一樣則存入新數組。(原數組長度不變,但要注意:sort方法不是按照大小排序,而是按照字典順序)
var arr = [1,1,2,2,3,3,4,4];
function noRepeat(arr) {
    var ret = [];
    arr.sort();  
    var res = arr[0];
    ret.push(arr[0]);
    for (var i = 1; i < arr.length; i++) {
        if (arr[i] != res) { 
            ret.push(arr[i]);
            res = arr[i];
        }
    }
    return ret;
}
var arr2 = noRepeat(arr);
console.log(arr2);
來了就點個贊再走把 (*  ̄3)(ε ̄ *)d
相關文章
相關標籤/搜索