查找數(shù)組重復(fù)元素的方法以及數(shù)組去重

function duplicates(arr) {
    var temp = arr.filter(function(item,i){
          return arr.indexOf(item)!== i;
     })
    return temp
}
//輸入[1, 2, 4, 4, 3, 3, 1, 5, 3]
//輸出[1,3,3,4]

該方法可以查詢重復(fù)元素,但元素重復(fù)次數(shù)超過兩次以上就會(huì)輸出多個(gè)重復(fù)元素

1、使用 reduce 和 includes

function unique(array) {
  return array.reduce(function (pre, item) {
    return pre.includes(item) ? pre : pre.concat(item);
  }, []);//第二個(gè)參數(shù)為[ ]要設(shè)置初始值,不然會(huì)從index1開始遍歷
}
var array = [1, 5, 2, 3, 4, 2, 3, 1, 3, 4];
unique(array);

2、使用 set 去重

var array = [1, 5, 2, 3, 4, 2, 3, 1, 3, 4];
var newArr = [...new Set(array)];
console.log(newArr); //[1, 5, 2, 3, 4]

3、使用map去重

function unique (arr) {
    let map = new Map()
    let array = new Array()  // 數(shù)組用于返回結(jié)果
    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
}
var array = [1, 5, 2, 3, 4, 2, 3, 1, 3, 4];
unique(array);

補(bǔ)充關(guān)于reduce用法

array.reduce(callback, [initialValue])
array.reduce((previousValue, currentValue, index, array) => { }, [initialValue])

其中 callback 函數(shù)有四個(gè)參數(shù)

  • previousValue (上一次調(diào)用回調(diào)返回的值,或者是提供的初始值(initialValue))
  • currentValue (數(shù)組中當(dāng)前被處理的元素)
  • index (當(dāng)前元素在數(shù)組中的索引)
  • array (調(diào)用 reduce 的數(shù)組)
    initialValue 為可選參數(shù),第一次調(diào)用 callback 函數(shù)時(shí)的初始值,注意 如果不設(shè)置 initialValue,reduceh 會(huì)從索引 index 1 的開始執(zhí)行,如果設(shè)置初始值 從索引 0 開始
    未設(shè)置初始值index始終從1開始.png

    數(shù)組去重正確用法.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容