题目描述
找出元素 item 在给定数组 arr 中的位置
输出描述:
如果数组中存在 item,则返回元素在数组中的位置,否则返回 -1
示例1
输入
[ 1, 2, 3, 4 ], 3
输出
2
按照正常的思路是用arr.indexOf(item)来进行判断,indexOf()方法本身就是查找数组的位置,若未找到,会返回-1,但是有些浏览器不支持indexOf(),所以需要分情况来进行讨论。
第一种是支持indexOf()方法的浏览器可以直接写
function indexOf(arr,item){
return arr.indexOf(item); //直接返回
}
第二种是不支持indexOf()方法的浏览器中采用遍历的方法
function indexOf(arr,item){
for(var i=0;i<arr.length;i++){
if(arr[i]===item) { //此处用绝对等于
return i; //返回此时i的值即为item的位置
} else{
return -1; //否则返回-1
}
}
}
综合为
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;
}else{
return -1;
}
}
}
}
其中
if(Array.prototype.indexOf())
{
return arr.indexOf(item);
}
是用来判断浏览器是否支持indexOf()方法。