2016-05-17 1 views
-2

Я стараюсь не использовать цикл, как Im, практикующий карту, фильтр и т. Д., И удивляться, почему мой код не работает?Использование карты для проверки истины или ложных не работает

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'. Почему вы устанавливаете 'временный'' 'false' для каждого элемента, если он не равен входному? И почему вы просто не выяснили проблему, выполнив свой код в отладчике? если вы изучаете 'map' и' filter', как вы пропустили 'some'? –

ответ

0

Потому что вы не проверить, если 2 в массиве, но вы проверяете, если массив имеет другое значение, чем 2.

Вы должны Wether проверить, если он есть, например:

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

Нет, я проверяю, находится ли 2 в массиве - это то, что функция карты предназначена для проверки элементов массива, а не самого массива. – 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));

Смежные вопросы