JavaScript中的indexOf()方法

indexOf()在JS中的应用,判断字符串中包含某一个字符时非常有用,下面来试一试在数组中的应用。这个小知识点源于最近的一次小DEMO。

查找数组元素的位置

demo1 数组遍历

function indexOf(arr, item) {
        for (var i = 0; i < arr.length; i++) {
            var val = arr[i];
            if(item == val){
                return i;
            }
        }
        return -1;
}

上面是我给出的第一种方法,对数组进行遍历,然后通过判断,返回相应的索引

demo2 数组的indexOf()

function indexOf(arr, item){
        return arr.indexOf(item);
}

只需要一行代码,一个属性就解决了,这到底是什么神属性

Array.prototype.indexOf()

描述:
indexOf 使用strict equality (无论是 ===, 还是 triple-equals操作符都基于同样的方法)进行判断 searchElement与数组中包含的元素之间的关系。

demo3 indexOf() 兼容性改进

function indexOf(arr, item){
        if(Array.prototype.indexOf){
            return arr.indexOf(item)
        } else {
            for(var i=0; i<arr.length; i++){
                if(arr[i] == item){
                    return i;
                }
            }
        }
        return -1;
    }

使用indexOf

01 arr.indexOf(searchElement[, fromIndex = 0])

    var array = [2, 5, 9];
    console.log(array.indexOf(9)); //2
    console.log(array.indexOf(7)); //-1
    console.log(array.indexOf(9, 2));//2
    console.log(array.indexOf(2, -1));//-1
    console.log(array.indexOf(2, -3));//0

02 找出指定元素出现的所有位置

    var indices = [];
    var arrar2 = ['a','b','a','c','a','d'];
    var element = 'a';
    var idx = arrar2.indexOf(element);
    while (idx != -1){
        indices.push(idx);
        idx = arrar2.indexOf(element, idx+1);
    }
    console.log(indices);

03 判断一个元素是否在数组里,不在则更新数组

function updateArr(arr, item){
        if(arr.indexOf(item) === -1){
            arr.push(item);
            console.log('更新数组' + arr);
        } else if(arr.indexOf(item) > -1){
            console.log(item + '在数组中存在');
        }
}

    var array3 = ['1', '2', '3'];
    updateArr(array3, '1');
    updateArr(array3, 1);

推荐阅读更多精彩内容