为什么在我的javascript中没有正确推送?

时间:2016-04-09 09:56:06

标签: javascript arrays

这是我在这里的第一个问题。我一直在做FCC挑战。我遇到了挑战" Seek and Destroy"。 下面是我复杂的代码:P

function destroyer(arr) {
    // Remove all the values
    var newarr = [];
    var final = [];
    for (var l = 0; l < arr[0].length; l++) {
        newarr.push(true);
    }
    console.log(newarr);
    for (var i = 1; i < arr.length; i++) {
        for (var j = 0; j < arr[0].length; j++) {
            if (arr[i] == arr[0][j]) {
                newarr[j] = false;
            }
        }
    }
    for (var k = 0; k < arr[0].length; k++) {
        if (arr[0][k] & newarr[k]) {
            final.push(arr[0][k]);
        }
    }
    return final;
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);

代码应该从初始数组中删除与这些参数具有相同值的所有元素。 请纠正我,因为我可能不善于编码。谢谢!

2 个答案:

答案 0 :(得分:1)

传递值的方式是错误的。使用以下方法,因为您希望在函数中接收单个值。

destroyer([[1, 2, 3, 1, 2, 3], 2, 3]);

&#13;
&#13;
function destroyer(arr) {
    // Remove all the values
    var newarr = [];
    var final = [];
    for (var l = 0; l < arr[0].length; l++) {
        newarr.push(true);
    }
    console.log(newarr);
    for (var i = 1; i < arr.length; i++) {
        for (var j = 0; j < arr[0].length; j++) {
            if (arr[i] == arr[0][j]) {
                newarr[j] = false;
            }
        }
    }
    for (var k = 0; k < arr[0].length; k++) {
        if (arr[0][k] & newarr[k]) {
            final.push(arr[0][k]);
        }
    }
    return final;
}
alert(destroyer([[1, 2, 3, 1, 2, 3], 2, 3]));
&#13;
&#13;
&#13;

答案 1 :(得分:0)

使用Arguments对象。

function destroyer(arr){
    var args = Array.prototype.slice.call(arguments);
    return arr.filter(function(value){
        return args.indexOf(value) == -1;
    })
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);