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

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

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

疯小蕾 2017-03-21 23:29:38
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 ]


查看完整回答
3 反对 回复 2017-03-21
?
西兰花伟大炮

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>

另外一个思路,旅行者说的是正确的

查看完整回答
3 反对 回复 2017-03-22
  • 疯小蕾
    疯小蕾
    谢谢,请问indexOf这种方法,为什么可以在数组上用啊,w3c上说是一个字符串对象才能用啊,所以我根本想不到用这种方法啊,你是怎么想到的啊
  • 西兰花伟大炮
    西兰花伟大炮
    这个真不是什么怎么想到的,遇见得多了,还是从别人那里看来的,比如就参考了旅行者同学的
  • 3 回答
  • 0 关注
  • 1465 浏览
慕课专栏
更多

添加回答

举报

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