JS算法题:查找数组元素位置

作者分享了一次笔试经历,在解决折半查找问题时遇到的挑战,并通过一个简单的数组遍历示例来回顾基本算法实现。同时介绍了JavaScript中indexOf()方法的使用及兼容性处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨天笔试,考算法,怎么说呢?一个简单的题目,关于折半查找,我却忘记怎么写了。所以我决定开始偶尔做点算法题。关于笔试的下一篇再写,先详细研究一下。
   
先看牛客网的题目:

题目描述

找出元素 item 在给定数组 arr 中的位置

输出描述:

如果数组中存在 item,则返回元素在数组中的位置,否则返回 -1
示例1

输入

[ 1, 2, 3, 4 ], 3

输出

2

这个题目一看就特别简单啊,遍历数组元素,判断数组元素是否与item相等,相等,返回元素位置,否则就返回-1.我的代码如下

function indexOf(arr, item) {
    var arrLength = arr.length;    //储存数组的长度,以免重复使用arr.length
    for(var i = 0;i < arrLength;i++){
        if(arr[i] == item){
            return i;
        }
    }
    return -1;
}

然后看看别人的解法,他们会用indexOf()方法,我对JS并不是很熟悉,所以回去看了看书,顺便总结一下这个东东:EC5为数组实例添加了两个位置方法,indexOf()和lastIndexOf()方法,它们都接收两个参数:要查找的项和(可选的)表示查找起点的索引一个从开始往末尾查找,一个从末尾向前查找。
由于不是所有浏览器都支持该方法。所以回到原题,大牛们都会添加一个判断浏览器是否支持indexOf方法的语句,所以我认为最终最全面的答案是:
function indexOf(arr, item) { if(Array.prototype.indexOf){ //判断是否浏览器是否支持indexOf()方法 return arr.indexOf(item); }else{ var arrLength = arr.length; //储存数组的长度,以免重复使用arr.length
for(var i = 0;i < arrLength;i++){
if(arr[i] == item){
return i;
}
}
} return -1;
}
    

不支持这个方法那就再用for循环嘛。。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值