2016-05-17 57 views
-2

我试图不使用循环,因为我正在练习地图,过滤器等,并想知道为什么我的代码不起作用?使用地图来检查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); 
+0

请格式化/缩进你的代码。你为什么使用'map'而没有从回调中返回任何东西,也没有对结果做任何事情?这就是'forEach'的语义。如果每个元素都不等于输入,为什么要将'temporary'设置为'false'?为什么不通过在调试器中逐句通过代码来找出问题?如果你正在学习'map'和'filter',你是如何错过'some'的? – 2016-05-17 18:02:45

回答

0

因为你不检查,如果2是数组,但你检查,如果阵列具有比2

不同的值,您应该还判定是否检查是否存在如:

let temporary=false; 
array.map(function(x){ 
if (x==item){ 
    temporary=true; 
} 
+0

不,我检查2是否在一个数组中 - 这就是map函数的用途 - 完全检查一个数组的元素,而不是数组本身。 – learningcoding

3

为什么不使用Array#some,它非常适合检查并返回一个布尔值。如果回调回报为true,则最好是短路。

function checking(array, item) { \t \t 
 
    return array.some(function (x) { 
 
     return x === item; 
 
    }); 
 
} 
 

 
document.write(checking([1, 2, 3], 2));