проверка на неопределенное при повторении скрипта array coffee

#javascript #coffeescript

#javascript #coffeescript

Вопрос:

Я выполняю итерацию по массиву и получаю undefined ошибку переменной при итерации в CoffeeScript. Я не очень уверен, как проверять на неопределенное при итерации по массиву в CoffeeScript.

Пожалуйста, найдите мой код ниже.

   i=0
  while Program.flatPercentageDiscountByMajorClass.length
    var 
    if typeof Program.flatPercentageDiscountByMajorClass[i].majorClass == 'undefined'  // this line is not working. throwing Undefined error
      FlatPercentageFlag = true
    else
      PdpTableFlag = true
    break  
    i  
  

Ответ №1:

Для проверки undefined элемента в coffee script вы можете использовать тернарный оператор, подобный этому.

 Flag = if typeof Program.flatPercentageDiscountByMajorClass[i].majorClass != 'undefined' then false else true 
  

Ответ №2:

Я бы предположил, что это Program.flatPercentageDiscountByMajorClass[i] так undefined , и попытка получить доступ к majorClass свойству для него вызывает ошибку.

Вы можете использовать экзистенциальный оператор в coffeescript, чтобы избежать этого.

 if typeof Program.flatPercentageDiscountByMajorClass[i]?.majorClass == 'undefined'  
// The existential operator goes before the dot  ------^ 
  

Некоторые другие наблюдения:

var не используется в coffeescript. Я действительно не уверен, чего вы пытаетесь достичь с помощью этого цикла. break Означает, что вы будете выполнять только одну итерацию — это только для целей отладки?

Вам следует изучить циклы и понимания для итерации по массивам в coffeescript, а не использовать while цикл.