var answer1=arguments[0];
var value1=arguments[1];
var value2=arguments[2];
var finalAnswer=[];
console.log(answer1);
console.log(value1);
console.log(value2);
for (var i=0;i<=answer1.length-1;i++ ){
if (answer1[i]===value2 || answer1[i]===value1){
finalAnswer= answer1.splice(i,1);
finalAnswer.pop();
}
}
console.log(answer1);
console.log(finalAnswer);
destroyer([1, 2, 3, 1, 2, 3], 2, 3);
您好我尝试了这个Seek and Destroy Challenge,它是搜索驱逐舰参数中给出的参数对象并将其删除。 但我的if语句不能正常工作。它没有检查或选项。它没有检查&#34; answer1 [i] === value2&#34;的比较选择权。
答案应该是:[1,1] 但我得到答案:[1,3,1,3]。它不是删除3。 有什么建议吗?
答案 0 :(得分:2)
使用 Array.filter
尝试此操作function destroyer(){
var answer1=arguments[0];
var value1=arguments[1];
var value2=arguments[2];
answer1 = answer1.filter(function(val){
return val!==value1 && val!==value2;
});
console.log('answr1',answer1);
}
destroyer([1, 2, 3, 1, 2, 3], 2,3);
答案 1 :(得分:0)
如果条件正常,它应该是正常的。导致结果出错的原因是您的for循环没有考虑对您正在迭代的数组所做的更改。
答案 2 :(得分:0)
尝试这个循环:
answer1.forEach(function(el){
if (el !== value1 && el !== value2) finalAnswer.push(el);
});
总计将是这样的:
function destroyer() {
var answer1=arguments[0];
var value1=arguments[1];
var value2=arguments[2];
var finalAnswer=[];
answer1.forEach(function(el){
if (el !== value1 && el !== value2) finalAnswer.push(el);
});
console.log(finalAnswer);
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);