JavaScript:如果定义了参数,函数将搜索参数在数组中出现的位置的索引
我尝试用JS解决以下问题: 定义一个函数myLastIndexOf,该函数最多接受三个参数:JavaScript:如果定义了参数,函数将搜索参数在数组中出现的位置的索引,javascript,arrays,loops,search,indexing,Javascript,Arrays,Loops,Search,Indexing,我尝试用JS解决以下问题: 定义一个函数myLastIndexOf,该函数最多接受三个参数: 排列 搜索值 startIdx(可选) myLastIndexOf应返回searchValue在数组中出现的最后一个索引 如果searchValue不在数组中,myLastIndexOf应该返回-1 如果定义了startIdx,myLastIndexOf应该开始在该索引处查找seachValue,然后在查找值时移到数组的前面 这是我的密码: 函数mylastedexof(数组、searchVal
- 排列
- 搜索值
- startIdx(可选)
函数mylastedexof(数组、searchValue、startIdx){
如果(startIdx!==未定义){
对于(i=startIdx;i>=0;i--){
//console.log(数组[i])
if(数组[i]==搜索值){
返回i
}
}
}
else if(startIdx==未定义){
对于(i=0;i3
您的循环从i=0
开始,它应该从i=array.length-1
开始。并且i
应该减少而不是增加
函数mylastedexof(数组、searchValue、startIdx){
如果(startIdx!==未定义){
对于(设i=startIdx;i>=0;i--){
//console.log(数组[i])
if(数组[i]==搜索值){
返回i
}
}
}
else if(startIdx==未定义){
for(设i=array.length-1;i>=0;i--){
console.log(数组[i])
if(数组[i]==搜索值){
返回i
}
}
}
返回-1;
}
log(mylastedexof(['gee','gee','gee','gee','gee','baby','baby']','gee'));
您将在第一次匹配时返回值,您应该在其中存储索引并在最后返回
函数mylastedexof(数组、searchValue、startIdx){
设指数=-1;
如果(startIdx!==未定义){
对于(i=startIdx;i>=0;i--){
if(数组[i]==搜索值){
指数=i
}
}
}
else if(startIdx==未定义){
对于(i=0;i有几个问题:
当你不需要的时候,你在复制逻辑
您将返回第一场比赛,而不是最后一场比赛
你没有声明你的变量,所以你的代码就是我所说的牺牲品
如果找不到匹配项,则不会返回-1
以下是评论更新:
函数mylastedexof(数组、searchValue、startIdx){
//如果未定义'startIdx',请使用数组的结尾
如果(startIdx==未定义){
startIdx=array.length-1;
}
//宣布“我`
var i;
//从'startIdx'向后循环`
对于(i=startIdx;i>=0;--i){
if(数组[i]==搜索值){
//尽早停止循环
打破
}
}
返回i;//如果找不到,则返回-1
}
log(myLastIndexOf(['gee','gee','gee','gee','gee','baby','baby'],'gee'));//=>3
console.log(myLastIndexOf(['gee','gee','gee','gee','gee','gee','baby','baby','gee','2));/=>2,因为startIdx
您在第一次匹配时返回它自己,代码不返回1,它返回0。啊,您是对的!错过了我应该递减的内容…谢谢:)