js 实现数组去重的方法(indexOf() 方法使用)

一、定义和用法

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。

js 实现对象数组中根据属性值去重(相同属性值只保留一个):

经验分享 程序员 微信小程序 职场和发展