或if条件if语句不能正常工作

时间:2016-12-02 06:06:09

标签: javascript

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。 有什么建议吗?

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);