Я пытаюсь извлечь данные из массива внутри массива объектов, а затем вставить данные в новый массив, используя вложенные циклы for. Только с одним циклом for of он работает, но с вложенными циклами for of он дает мне следующую ошибку:
TypeError: TypeError: _iterator4[typeof Symbol === "function" ?Symbol.iterator : "@@iterator"] is not a function. (In '_iterator4typeof Symbol === "function" ? Symbol.iterator : "@@iterator"', '_iterator4[typeof Symbol === "function" ? Symbol.iterator :"@@iterator"]' is undefined)
Я уже пробовал использовать циклы while и for(i=0;i<blah.length;i++).
Это мой код.
let approvals=[]
for(let task of this.props.currentSubscriptionData.subData.tasks){
if (task.taskupdates.length!=0){
for(let approval of task){
aprrovals.push(approval)
}
}
}
Следующее работает просто отлично.
let approvals=[]
for(let task of this.props.currentSubscriptionData.subData.tasks){
if (task.taskupdates.length!=0){
console.info('hi')
}
}
Упрощенная структура данных: начальный массив
this.props.currentSubscriptionData.subData.tasks
Array [
Object {
"taskupdates": Array [
Object {
"approval_amount_required": 100000,
},
Object {
"approval_amount_required": 150000,
},
Object {
"approval_amount_required": 50000,
},
Object {
"approval_amount_required": 50000, },
],
},
Object {
"taskupdates": Array [],
},
Object {
"taskupdates": Array [],
},
]
Вы имели в виду for (let approval of task.taskupdates)? Похоже, что вы не можете повторить task.
Спасибо! теперь это почти работает, я получаю can't find variable approvals при нажатии на пустой массив. это как-то выходит за рамки?
вы написали это aprrovals с двумя 'р'. И одно «п».
Спасибо за вашу помощь, ребята :) работает сейчас.
Просто в качестве общего замечания, которое помогло мне более чем 10 лет работы в индустрии программного обеспечения, в общем, это не ваш язык программирования сломался. Дело не в том, что вы столкнулись с каким-то странным пограничным случаем «не может быть цикла for в цикле for» или «это как-то странно выходит за рамки». В 99% случаев это простая ошибка, которую вы сделали, и вы просто еще не видели ее :-)
Я полностью согласен, но иногда мы, программисты, просто просматриваем наш код 100 раз и пропускаем одну и ту же крошечную ошибку. Вот почему мне нужна дополнительная пара глаз, чтобы просмотреть это для меня :D. Еще раз спасибо ребята



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Второй цикл:
for(let approval of task.taskupdates)
Хотя этот код может решить вопрос, включая объяснение того, как и почему это решает проблему, действительно поможет улучшить качество вашего сообщения и, вероятно, приведет к большему количеству голосов. Помните, что вы отвечаете на вопрос для будущих читателей, а не только для того, кто задает сейчас. Пожалуйста, отредактируйте свой ответ, чтобы добавить пояснения и указать, какие ограничения и предположения применяются.
Как устроены ваши данные?