1. 程式人生 > 其它 >js 實現陣列去重的方法(indexOf() 方法使用)

js 實現陣列去重的方法(indexOf() 方法使用)

技術標籤:JavaScript前端javascript

一、定義和用法

indexOf() 方法可返回陣列中某個指定的元素位置。

該方法將從頭到尾地檢索陣列,看它是否含有對應的元素。開始檢索的位置在陣列 start 處或陣列的開頭(沒有指定 start 引數時)。如果找到一個 item,則返回 item 的第一次出現的位置。開始位置的索引為 0。

如果在陣列中沒找到指定元素則返回 -1。

語法

array.indexOf(item,start)

引數描述
item必須。查詢的元素。
start可選的整數引數。規定在陣列中開始檢索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略該引數,則將從字串的首字元開始檢索。
var arrs = ["1", "2", "3", "4", "5"];
var a = arrs.indexOf("3");
console.log(a);// 2
var b = arrs.indexOf("6");
console.log(b);// -1

console.log(arrs.indexOf("3" , 3));  // -1
console.log(arrs.indexOf("3" , 2));  // 2


二、js 使用indexOf() 實現陣列去重的兩種方法:

// 陣列去重
var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5,5,5];

//1
function noRepeat(arr) {
    for (var i = 0; i < arr.length; i++) {
        if (arr.indexOf(arr[i]) != i) {
            arr.splice(i, 1);//刪除陣列元素後陣列長度減1後面的元素前移
            i--;//陣列下標回退
        }
    }
    return arr;
}

noRepeat(arr);//呼叫
console.log(arr);//[1, 23, 3, 5, 6, 7, 9, 8]
var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5,5,5];

//2
function distinct(arr) {
    var newArr = [];
    for (var i = 0; i < arr.length; i++) {
        if (newArr.indexOf(arr[i]) < 0) {
            newArr.push(arr[i])
        }
    }
    return newArr;
}

distinct(arr);//呼叫
console.log(arr);//[1, 23, 3, 5, 6, 7, 9, 8]

疑問:

我的網頁是使用electron 打包成軟體執行的,在控制檯列印的時候 console.log(arrs.indexOf("3" , 3)); 沒有返回 -1 ,而是返回2??? 網頁控制檯返回的是 -1。