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));
3 回答
已采纳
千秋此意
TA贡献158条经验 获得超187个赞
把 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 ]
西兰花伟大炮
TA贡献376条经验 获得超318个赞
<!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>
另外一个思路,旅行者说的是正确的
添加回答
举报
0/150
提交
取消