使用地图来检查true或false不起作用
问题描述:
我试图不使用循环,因为我正在练习地图,过滤器等,并想知道为什么我的代码不起作用?使用地图来检查true或false不起作用
function checking(array,item){
var temporary=true;
array.map(function(x){
if (x!=item){
temporary=false;
}
});
return temporary;
}
checking([1, 2, 3], 2);
答
因为你不检查,如果2是数组,但你检查,如果阵列具有比2
不同的值,您应该还判定是否检查是否存在如:
let temporary=false;
array.map(function(x){
if (x==item){
temporary=true;
}
+0
不,我检查2是否在一个数组中 - 这就是map函数的用途 - 完全检查一个数组的元素,而不是数组本身。 – learningcoding
答
为什么不使用Array#some
,它非常适合检查并返回一个布尔值。如果回调回报为true
,则最好是短路。
function checking(array, item) { \t \t
return array.some(function (x) {
return x === item;
});
}
document.write(checking([1, 2, 3], 2));
请格式化/缩进你的代码。你为什么使用'map'而没有从回调中返回任何东西,也没有对结果做任何事情?这就是'forEach'的语义。如果每个元素都不等于输入,为什么要将'temporary'设置为'false'?为什么不通过在调试器中逐句通过代码来找出问题?如果你正在学习'map'和'filter',你是如何错过'some'的? – 2016-05-17 18:02:45