以下是我的代码
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。为什么呢?
答案 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)