BOOLEAN не работает после добавления FOR LOOP JavaScript - PullRequest
0 голосов
/ 04 ноября 2018

Я работаю над назначением, где логическое значение должно переключаться после того, как переменная соответствует значению в массиве. Переменная должна соответствовать значению в массиве, используя цикл for. Тем не менее, я могу переключить логическое значение, прежде чем ввести цикл for. Но после того, как я ввел цикл for, логическое значение застряло в своем первоначальном значении false.

Может кто-нибудь объяснить, почему это происходит?

Могу ли я также попросить, я не ищу «как это сделать», а скорее объясняю, почему это происходит, поэтому я буду признателен, если вы не порекомендуете мне «другой лучший способ» достижения этой цели. - Я просто хочу понять концепцию, как я начинающий.

Код, который я использую перед циклом for (который корректно изменяет логическое значение):

var c = 3;
var w = [];
var m = false;

w.push(3,4);

if (c === w[0]){
  m = true;
}

alert (m);

Однако после того, как я добавил счетчик цикла for, а также изменил условие if с c===w[0] на c===w[i], я получаю только ложное предупреждение, используя следующий код:

var c = 3;
var w = [];
var m = false;

w.push(3,4);

for (i=0; i<2 && c!==w[i]; i++){
  if (c === w[i]){
    m = true;
  }
}

alert (m);

Ответы [ 2 ]

0 голосов
/ 04 ноября 2018

Вместо использования цикла for, если вы только хотите, чтобы булева переменная была включена, удовлетворяя только одному условию, вы можете использовать метод some (). Используя это, цикл не будет перебирать все объекты и остановится, как только ваше условие будет выполнено. Пример показан ниже: -

var arr = [3,4,5];
var m = 4;
var bool = false;

array.some(function(item) {
if (m === item){
bool = true;
}
});
alert(bool);

Так что это в основном даст вам предупреждение true, как только вы получите соответствующий объект из массива.

0 голосов
/ 04 ноября 2018

Условие от for проверяется также перед первой итерацией, поэтому if не запускается. Проверьте код как это:

var c=3;
var w=[];
w.push(3,4);
var m=false;
for (var i=0;i<2 && c!==w[i];i++){
    console.log('In loop')
    if (c===w[i]){
        m=true;
    }
}
...