这是我在这里的第一个问题。我一直在做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);
代码应该从初始数组中删除与这些参数具有相同值的所有元素。 请纠正我,因为我可能不善于编码。谢谢!
答案 0 :(得分:1)
传递值的方式是错误的。使用以下方法,因为您希望在函数中接收单个值。
destroyer([[1, 2, 3, 1, 2, 3], 2, 3]);
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;
答案 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);