为什么我的代码仍然会返回true?

时间:2016-11-17 06:58:11

标签: javascript

以下是我的代码

test.map((value, index) => {
    console.log(value);
    if(value.customer_mobile) {
        alert(index + 'fail');
        return false;
    }

    if(value.customer_email) {
        alert(index + 'fail');
        return false;
    }
})

return true;

我运行上面的代码,即使customer_mobile为false,它也会返回true。为什么呢?

2 个答案:

答案 0 :(得分:1)

试试这个:

var flag = true;
test.map((value, index) => {
    console.log(value);
    if(customer_mobile) {
        alert(index + 'fail');
        flag = false;
    } 

    if(customer_email) {
        alert(index + 'fail');
        flag = false;
    }
});

return flag;

答案 1 :(得分:1)

它无法正常工作,因为当您使用将测试数组映射到布尔数组的Array.map时。

如果你将它分配给一个变量,你会看到你得到的东西是

var temp = test.map((value,index)=> {
     /...
});
console.log(temp) // [false,false]

然后你就回来了。

所以你应该先在地图回调函数的末尾返回true。然后检查回来的数组是否都是真的。

return test.map((value, index) => {
    console.log(value);
    if(value.customer_mobile) {
        alert(index + 'fail');
        return false;
    }
    if(value.customer_email) {
        alert(index + 'fail');
        return false;
    }
    return true;
}).every(bool => bool)