Почему тернарный оператор выдает undefined в цикле?

116
22 августа 2019, 14:10

Не могу понять, почему выходит такой ответ в этом цикле, скажите пожалуйста.

$('input').keypress(function() { 
  var obj = [{ 
      name: "Loki", 
      surname: "Man" 
    }, 
    { 
      name: "Doki", 
      surname: "Mon" 
    }, 
    { 
      name: "Fuka", 
      surname: "Don" 
    } 
  ]; 
 
  var arr = obj.map((item) => { 
    var otvet = item.name == 'Doki' ? console.log(item.name) : ''; 
    console.log(otvet); 
  }); 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
<input />

Answer 1

Потому что console.log('item') ничего не возвращает.

При выполнении условия в тернарном операторе Вы записываете в переменную otvet значение, которое возвращает вызов console.log(...);.

$('input').keypress(function() { 
  var obj = [ 
    { 
      name: "Loki", 
      surname: "Man" 
    }, 
    { 
      name: "Doki", 
      surname: "Mon" 
    }, 
    { 
      name: "Fuka", 
      surname: "Don" 
    } 
  ]; 
 
  var arr = obj.map(function(item) { 
    if (item.name == 'Doki') 
      return console.log(item.name); // надо return item.name; 
    else 
      return ''; 
  }); 
  console.log(JSON.stringify(arr)); 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
<input />

Демонстрация того, как переменной otvet присваивается значение undefined:

function test() { 
} 
var otvet = true? test() : 'defined'; 
console.log(otvet);

READ ALSO
Вывод надписи на столбике Chart js

Вывод надписи на столбике Chart js

Все привет, в первые сталкиваюсь с Chart Js и сразу же встал в тупикТребуется вывести данные из базы данных mysql сделать подсчеты в php и вывести...

128
Бордер в процентах

Бордер в процентах

Пытаюсь понять, как сделать такой бордер

122
Задержка внутри двойного цикла

Задержка внутри двойного цикла

Привет у меня такой код

128
Помогите с группировкой в запросе

Помогите с группировкой в запросе

Нужно получить промежутки времени работы менеджеров, 15 минут бездействия считать за перерывИ группировать их по менеджерам

102