这是一个在面试当中,经常被问到的题目,也是一个常见的搜索算法
var arrs = [8,11,21,-3,67,22,55];
// 8--> 0,11---> 1
01
方式1-使用for循环
http://mpvideo.qpic.cn/0bc3riabyaaaj4akhmzkofrfbcwddsfaahaa.f10002.mp4?dis_k=6eee1d9eac7b107cf53bd48f9db31e9f&dis_t=1648724241&vid=wxv_2304795247329345536&format_id=10002&support_redirect=0&mmversion=false
用给定的值,与原数组中的每个值进行比较,如果相等,那么就返回对应的索引
function findArrIndex(arrs,element) {
for(var i = 0;i<arrs.length;i++>) { // 循环遍历数组每一项与指定的元素进行比较
if(arrs[i] == element) {
return i;
}
}
}
var arrs = [8,11,21,-3,67,22,55];
console.log(findArrIndex(arrs,67));
02
方式2-使用for..of
http://mpvideo.qpic.cn/0bc3quacgaaaxuaoflzkd5rfbbodeocqaiya.f10002.mp4?dis_k=98db1e5b5cbc85086621c4289a079f6e&dis_t=1648724238&vid=wxv_2304801484024512514&format_id=10002&support_redirect=0&mmversion=false
使用for..of
进行遍历,此方法,需要借助一个第三方变量index
function findArrIndex(arr,element) {
var index = 0;
for(var item of arr) {
if(item == element) {
return index;
}
index++;
}
}
var arrs = [8,11,21,-3,67,22,55];
console.log(findArrIndex(arrs,67));
03
方法3-使用forEach
http://mpvideo.qpic.cn/0b2ejaaamaaag4amperkdrrfasgdazeaabqa.f10002.mp4?dis_k=587727cca4703e3fbafe78984687f560&dis_t=1648724235&vid=wxv_2304802671582969858&format_id=10002&support_redirect=0&mmversion=false
for..each
没有返回值,但是函数可以设置返回值,同样需要借助一个第三方变量idx
function findArrIndex(arr,element) {
var idx = 0;
arr.forEach((item,index) => {
if(item == element) {
idx = index;
}
})
return idx;
}
var arrs = [8,11,21,-3,67,22,55];
console.log(findArrIndex(arrs,55));
04
方法4-使用findIndex
http://mpvideo.qpic.cn/0b2e6maakaaagaamirzkmvrfb46daxzqabia.f10002.mp4?dis_k=e90aa6f3565cab84a728ca7fd7c49c76&dis_t=1648724209&vid=wxv_2304803814363037697&format_id=10002&support_redirect=0&mmversion=false
查找数组中素数的元素的索引(如果不存在,则返回-1)
var arrs = [8,11,21,-3,67,22,55];
var index = arrs.findIndex(function(element) {
return element == 67
})
console.log(index); // 4
上面的代码可以封装成一个函数
var arrs = [8,11,21,-3,67,22,55];
function getIndex(arr,num) {
var index = arr.findIndex(function(element) {
return element == num
})
return index;
}
console.log(getIndex(arrs,67)); // 4
给定一个元素,然后在与数组当中进行匹配,直到找到符合条件的元素,我们在返回它在数组当中的所处的位置
在进行线性搜索当中,进行了一个简单的for循环遍历
数组当中的每一项,在用遍历出来的每一项,和我们传入的元素进行一个匹配,当有相等值的时候,返回它对应的下标,这是线性搜索的一个实现
视频地止