当前第2页 返回上一页
1 2 3 4 5 6 7 | function sortIndex( array , value) {
for (let i = 0; i < array .length; i++) {
if ( array [i] > value) {
return i;
}
}
return array .length;}
|
2.2 二分法
1 2 3 4 5 6 7 8 9 10 11 12 | function sortIndex( array , value) {
let low = 0,
high = array .length;
while (low < high) {
let mid = Math. floor ((low + high) / 2);
if ( array [mid] < value) {
low = mid + 1;
} else {
high = mid;
}
}
return high;}
|
三、indexOf 和 lastIndexOf
indexOf()
:返回在数组中可以找到一个给定元素的第一个索引,如果不存在则返回-1。从数组的前面向后查找,从 fromIndex 处开始。lastIndexOf()
:返回指定元素在数组中的最后一个的索引,如果不存在则返回-1。从数组的后面向前查找,从 fromIndex 处开始。
3.1 indexOf 的第一版实现
1 2 3 4 5 6 7 | function indexOf( array , value) {
for (let i = 0; i < array .length; i++) {
if ( array [i] === value) {
return i;
}
}
return -1;}
|
emmmm…在看过 findIndex 和 lastFindIndex 的实现后,indexOf 也要整整齐齐的啊~
3.2 indexOf 和 lastIndexOf 通用第一版
通过参数来创建不同的查找方法
1 2 3 4 5 6 7 8 9 10 | function createIndexOf(dir) {
return function ( array , value) {
let index = dir > 0 ? 0 : arr.length - 1;
for (; index >= 0 && index < arr.length; index += dir) {
if ( array [i] === value) {
return i;
}
}
return -1;
};}
|
3.3 indexOf 和 lastIndexOf 通用第二版
这一次,我们允许指定查找位置,我们来看看 fromIndex 的作用:
设定开始查找的位置。如果该索引值大于或等于数组长度,意味着不会在数组里查找,返回 -1。
如果参数中提供的索引值是一个负值,则将其作为数组末尾的一个抵消,即 -1 表示从最后一个元素开始查找,-2 表示从倒数第二个元素开始查找 ,以此类推。
注意:如果参数中提供的索引值是一个负值,仍然从前向后查询数组。如果抵消后的索引值仍小于 0,则整个数组都将会被查询。其默认值为 0。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | function createIndexOf(dir) {
return function ( array , value, fromIndex) {
let length = array == null ? 0 : array .length;
let i = 0;
if (!length) return -1;
if (fromIndex >= length) return -1;
if (typeof fromIndex === "number" ) {
if (dir > 0) {
i = fromIndex >= 0 ? fromIndex : Math.max(length + fromIndex, 0);
} else {
length =
fromIndex >= 0
? Math.min(fromIndex + 1, length)
: fromIndex + length + 1;
}
}
for (
fromIndex = dir > 0 ? i : length - 1;
fromIndex >= 0 && fromIndex < length;
fromIndex += dir ) {
if ( array [fromIndex] === item) return fromIndex;
}
return -1;
};}
|
写到这里我们在数组中查找元素就结束了,自己实现的和loadsh
或underscore
还是有很大区别的,如果大家对上面三节的代码任意有更好的实现,请一定写在留言区哦~

相关免费学习推荐:javascript(视频)
以上就是JavaScript 专题之九:数组中查找指定元素的详细内容,更多文章请关注木庄网络博客!
返回前面的内容
相关阅读 >>
详解js中值传递和引用传递的区别
不可错过的从原型到原型链,修炼javascript内功
html5 shiv.js和respond.min.js详细介绍
javascript、node.js和npm之间有什么关系
javascript中this的用法是什么
html5实现移动端下拉刷新(原理和代码)
javascript有没有二维数组
javascript怎么实现按钮隐藏div
javascript可以编写网页吗
js怎么通过类来修改css样式
更多相关阅读请进入《javascript》频道 >>
人民邮电出版社
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者
转载请注明出处:木庄网络博客 » JavaScript 专题之九:数组中查找指定元素