У меня есть следующий объект:
объект через консоль .
И с помощью следующего кода я получаю его и читаю.

truepush.push({ operation: "get-tags", callback: function(error,response){ console.log(error,response); subscribedTopics = []; response.data.forEach(el ={amp}gt; subscribedTopics.push(el.name)); console.log("SUBSCRIBED LIST: "   subscribedTopics); subscribedTopics.forEach(function(el) { if (el.name.equals("choir")) { console.log("CHOIR CALLED"); } else if (el.name.equals("kobel")) { console.log("KOBEL CALLED"); } else if (el.name.equals("kitchen")) { console.log("KITCHEN CALLED"); } }); } }); 

Но я получаю следующую ошибку:

 Uncaught TypeError: Cannot read property 'forEach' of undefined at callback (index.js:1869) at main.js:1 at XMLHttpRequest.i.onreadystatechange (main.js:1) 

Это говорит об ошибке в этой строке:

 response.data.forEach(el ={amp}gt; subscribedTopics.push(el.name)); 

В чем здесь проблема?

РЕДАКТИРОВАТЬ:
Вот что я получаю, когда запускаю: console.log(response);
консольный результат

РЕДАКТИРОВАТЬ 2: Утомленная вещь: когда я печатаю массив subsppedTopics (как вы можете видеть выше в примере кода) ….

 console.log("SUBSCRIBED LIST: "   subscribedTopics); 

… он возвращает правильный массив, который я ожидаю. [«хор», «кобель», «кухня»]

РЕДАКТИРОВАТЬ 3:
С помощью следующего кода я обнаружил что-то странное:

 truepush.push({ operation: "get-tags", callback: function(error,response){ console.log("______________________"); console.log("full output of console.log(error, response.data):"); console.log(error, response.data); console.log("______________________"); subscribedTopics = []; response.data.forEach(el ={amp}gt; subscribedTopics.push(el.name)); subscribedTopics.forEach(function(el) { if (el.name.equals("choir")) { console.log("CHOIR CALLED"); document.getElementById("switch_choir").checked = true; } else if (el.name.equals("kobel")) { console.log("KOBEL CALLED"); document.getElementById("switch_kobel").checked = true; } else if (el.name.equals("kitchen")) { console.log("KITCHEN CALLED"); document.getElementById("switch_kitchen").checked = true; } }); } }); 

Вот вывод:
выход
Похоже, обратный вызов срабатывает два раза. Сначала с правильным объектом, а затем, когда он запускает второе время, его значение не определено.

~ Filip

 try: if(response.data !== 'undefined'){ response.data.forEach(el ={amp}gt; subscribedTopics.push(el.name)); } 

Глядя на код и ответы, которые вы получаете, не похоже, что он должен это делать. На самом деле, если вы добираетесь до линии:

console.log("SUBSCRIBED LIST: " subscribedTopics);

тогда вы не могли потерпеть неудачу на response.data.forEach .

Это заставляет меня поверить, что, возможно, эта функция выполняется дважды — один раз, когда вы получаете реквизит данных, и, возможно, один раз, когда вы не