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);