为了账号安全,请及时绑定邮箱和手机立即绑定

自己改写的判断二维数组中是否含有某数组,有就返回它的位置?求解答!

自己改写的判断二维数组中是否含有某数组,有就返回它的位置?求解答!

慕森王 2019-08-17 09:53:46
这个方法始终返回-1,应该怎么改,或者有没有更好的方法?array是二维数组,element是一维数组arrayHasElement(array,element){letel=array;for(letnumberinel){if(el[number].length===element.length){for(varindexinel){if(el[number][index]!==element[index]){break;}if(Number(index)===(el[number].length-1)){console.log('bbbbbbbb',number);returnnumber;}}}}return-1;},上边写错了el落下了一个numberarrayHasElement(array,element){letel=array;for(letnumberinel){if(el[number].length===element.length){for(varindexinel[number]){if(el[number][index]!==element[index]){break;}if(Number(index)===(el[number].length-1)){returnnumber;}}}}return-1;},有没有能优化的,感觉写的着实麻烦?
查看完整描述

2 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

如果你array[i]和element是相同的引用,则可以直接使用array.indexOf(element)。如果不是相同引用,但数组内内容一致属于相同的话,简单实现如下
vararray=[[1,2,3],[4,5],[6]];
varelement=[4,5];
varindex=array.findIndex((item)=>{
if(item.length!==element.length)returnfalse;
returnelement.every((number,index)=>{
returnnumber===item[index];
});
});
console.log(index);
题主的写法修改成下面即可
functionarrayHasElement(array,element){
letel=array;
for(letnumberinel){
if(el[number].length===element.length){
for(varindex=0;indexif(el[number][index]!==element[index]){
break;
}
}
if(index===el[number].length){
returnNumber(number);
}
}
}
return-1;
}
                            
查看完整回答
反对 回复 2019-08-17
  • 2 回答
  • 0 关注
  • 229 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信