千秋此意
把 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>另外一个思路,旅行者说的是正确的