想实现提取两个数组中相同的元素,为什么返回了一个空数组,求大神解答

function main(arr1,arr2){

var arrn=new Array();

var k=0;

for(i=0;i<arr1.length;i++){

for(j=0;j<arr2.length;j++){

if(arr1[i]==arr2[j]){

arrn.push(arr2[j]);

}

}

return arrn;}

}


 var b=[1,2,3,4];

 var c=[3,5,2,4];

console.log(main(b,c));


疯小蕾
浏览 1466回答 3
3回答

千秋此意

把 return 往下移两行,你丢到for循环里了,也就是第一次循环就直接return了,后面的直接不执行了——————————————————————————感谢采纳,也补充个写法吧,顺便说下你问的关于indexOf方法,String.prototype.indexOf()和Array.prototype.indexOf()是两个方法,不过作用类似。数组的indexOf方法语法为arr.indexOf(ele, idx),将返回arr中ele首次出现的索引值,如果找不到则返回-1,idx是开始搜索的位置, 默认为0。function intersect(a, b) {     return function(res, idx) {         return idx < a.length ? arguments.callee(res.concat((!res.includes(a[idx]) && b.includes(a[idx])) ? a[idx] : []), ++idx) : res;     }([], 0) } var b = [1, 2,2, 3, 4]; var c = [3, 5, 2, 4]; var result = intersect(b, c); console.log(result); // => [ 2, 3, 4 ]

西兰花伟大炮

<!DOCTYPE html> <html>     <head>         <meta charset="UTF-8">         <title></title>     </head>     <body>         <script>             function compareArr(arr1,arr2){                 var arr_mid = [];                 for (var i = 0;i < arr2.length;i++) {                     if(arr1.indexOf(arr2[i]) != -1){                         arr_mid.push(arr2[i]);                     }                 }                 return arr_mid;             }             arr1  = [1,2,4,6,7,9];             arr2 = [1,3,5,6,7,8];             console.log(compareArr(arr1,arr2));         </script>     </body> </html>另外一个思路,旅行者说的是正确的
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript