JS编程训练 | 题1:查找数组元素位置
2017-07-10 22:11
162 查看
题目描述
找出元素 item 在给定数组 arr 中的位置输出描述:
如果数组中存在 item,则返回元素在数组中的位置,否则返回 -1
示例1
输入
[ 1, 2, 3, 4 ], 3
输出
2
思路一:简单粗暴的for循环查找
function indexOf(arr, item) { for(var i = 0; i < arr.length; i++){ if(arr[i] === item){ return i; } } return -1; }
运行结果
运行时间:157ms
占用内存:14140k
思路二:一条JS方法搞定
function indexOf(arr, item) { return arr.indexOf(item); }
运行结果:
运行时间:180ms
占用内存:14140k
思路三:花样玩遍历数组的方法.forEach
function indexOf(arr, item) { var index = -1; arr.forEach(function(val,i){ if(val === item && index ===-1){ index = i; } }); return index; }
但是这种方法有两个弊端:
首先,
var index = -1在任何情况下都会被执行, 但它是作为保底的, 保底不该被始终执行.
其次, 因为
.forEach()无法使用 break, 当
index = i发生后, 依旧会继续对数组进行遍历, 要一遍遍执行
if, 虽然没什么结果, 但后来的这些消耗是毫无必要的.
运行时间:205ms
占用内存:14096k
思路四:结合思路一二
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; } }
小Tips
if (Array.prototype.indexOf)这一步是在判断是否支持
indexOf,很严谨,老 IE 是没有
index of这个方法的
ECMAScript提供了两种方法indexof(),lastindexof(),表示要查找的项和起点位置的索引
相关文章推荐
- JS编程训练 | 题13:查找元素位置
- JS编程:查找数组元素位置
- js查找数组元素位置
- JS能力测评-查找数组元素位置
- js查找数组元素位置
- JS编程训练 | 题11:查找重复元素
- DOCTYPE声明对JS的影响(网页的位置编程)
- JS编程训练 | 题6:数组前插入元素
- Javascript刷题 》 查找数组元素位置
- 编程学习:循环数组元素查找
- JS编程训练 | 题2:数组求和
- js数组插入指定位置元素,删除指定位置元素,查找指定位置元素算法
- JS编程训练 | 题4:数组中添加元素
- 在JavaScript的数组中进行数组元素查找和替换(JS的indexOf等)
- JS事件调试 - 查找HTML元素绑定的事件以及绑定代码所在位置
- JS事件调试 - 查找HTML元素绑定的事件以及绑定代码所在位置
- JS中查找一个字符串中所有子串的位置
- js 操作数组函数 (查找、删除 js中指定的数组元素)
- C语言基础编程之指针实现字符位置查找
- JS事件调试 - 查找HTML元素绑定的事件以及绑定代码所在位置