JS實現數組去重

1.ES6新增數據去重方法Setjavascript

    思路:Set 是ES6引入的一種新的數據結構類型,容許你存儲任何類型的惟一值,不管是原始值仍是對象引用
 
  
        let aa = [1, 2, "2", 4, 9, "a", "a", 2, 3, 5, 6, 5];

        //Set數組簡單的去重
        console.log([...new Set(aa)]);   // [1, 2, "2", 4, 9, "a", 3, 5, 6]

        let s1 = new Set();
        s1.add('a');
        s1.add('a');
        console.log(s1);   //{"a"}
 
  

  

 

2.簡單去重方法java

  思路:遍歷數組中的每個數據,判斷新數組中是否存在當前數據,如不存在加入數組

//簡單去重方法
function uniq(arr) {
    let newArr = [];
    arr.forEach(a => {
        if (!isSame(newArr, a)) {
            newArr.push(a);
        }
    })
    return newArr;
}
function isSame(arr, value) {
    for (let i = 0; i < arr.length; i++) {
        const a = arr[i];
        if (a === value) {
            return true;
        } else if ((isNaN(a) && a !== undefined && !a) && isNaN(value) && value !== undefined && !value) {//判斷是不是NaN
            return true;
        }
    }
    return false;
}

        uniq(aa);  //[1, 2, "2", 4, 9, "a", 3, 5, 6]

3.數組下標判斷方法數據結構

  思路:判斷當前數組的第i項第一次出現的位置是不是i位,如果,則不重複加入新數組spa

 function uniq3(array) {
            let newarr = [];
            for (let i = 0; i < array.length; i++) {
                if (array.indexOf(array[i]) == i) {
                    newarr.push(array[i]);
                }
            }
            return newarr;
        }
        console.log(uniq3(aa));   //[1, 2, "2", 4, 9, "a", 3, 5, 6]

4.相鄰排序法code

  思路:給數組排序,僅加入不與相鄰的數組相同的數據對象

function uniq4(array) {
            array.sort();
            console.log(array);

            let temp = [array[0]];
            for (let i = 1; i < array.length; i++) {
                if (array[i] != temp[temp.length - 1]) {
                    temp.push(array[i]);
                }
            }
            return temp;
        }
        console.log(uniq4(aa));  //[1, 2, 3, 4, 5, 6, 9, "a"]

5.雙層循環blog

  思路:當內層循環檢測到跟外層循環同樣的值的時候,跳出內層循環,拋棄外層循環當前值,繼續下一次循環排序

 function uniq5(array) {
            let temp = [];
            for (let i = 0; i < array.length; i++) {
                for (let j = i + 1; j < array.length; j++) {
                    if (array[i] === array[j]) {
                        ++i;
                    }
                }
                temp.push(array[i]);
            }
            return temp;
        }
        console.log(uniq5(aa));  //[1, "2", 2, 3, 4, 5, 6, 9, "a"]

6.Object.keys()ip

  思路:Object.keys() 方法會返回一個由一個給定對象的自身可枚舉屬性組成的數組,數組中屬性名的排列順序和使用 for...in 循環遍歷該對象時返回的順序一致 

        let obj = {};//key 
        arr1.forEach(item => {
            obj[item] = 1;
        });
      
        console.log(Object.keys(obj).map(o => Number(o)));//[1, 2, 3, 4, 5]
相關文章
相關標籤/搜索