Узел красный Невозможно прочитать свойство «Символ (Symbol.iterator)» неопределенного

У меня есть эта проблема в небольшой программе, которую я действительно не понимаю (я новичок в красном узле), код

var profile = msg.user.profile;
var cart    = profile.cart = profile.cart || [];
var search  = profile.search;
var id      = msg.payload.substring(8);

for (let item of search){
  if ( item.id != id) continue;
  cart.push(item);
  msg.payload = item;
}

И полная ошибка TypeError: Cannot read property 'Symbol(Symbol.iterator)' of undefined в строке for (let item of search){. Я провел некоторые исследования и обнаружил, что эта ошибка обычно связана с чем-то, что не определено, но я действительно не понимаю, как это решить.


person user3794667384    schedule 08.12.2016    source источник


Ответы (1)


Я вижу, вы используете синтаксис let; Синтаксис let доступен только в ecmascript 2015 (версия javascript), поэтому в основном вам нужно переписать код следующим образом.

var profile = msg.user.profile;
var cart    = profile.cart = profile.cart || [];
var search  = profile.search;
var id      = msg.payload.substring(8);

// assuming that profile.search is an array
for (var i = 0 ; i < search.length ; i++){
  var item = search[i];
  if ( item.id != id) continue;
  cart.push(item);
  msg.payload = item;
}

// if it is an object, then you could loop through its props
for (var prop in search ){
   var item = search[prop];
   if ( item.id != id) continue;
   cart.push(item);
   msg.payload = item;
}
person johnjerrico    schedule 08.12.2016