【问题标题】:Why can't I have a for loop inside a for loop?为什么我不能在 for 循环中有一个 for 循环?
【发布时间】:2019-08-20 05:06:48
【问题描述】:

我正在尝试从对象数组中的数组中提取数据,然后使用嵌套的 for 循环将数据推送到新数组中。只有一个 for of 循环它可以工作,但嵌套 for of 循环它给我以下错误:

TypeError: TypeError: _iterator4[typeof Symbol === "function" ?Symbol.iterator : "@@iterator"] 不是函数。 (在 '_iterator4typeof Symbol === "function" ?符号迭代器: "@@iterator"', '_iterator4[typeof Symbol === "function" ? Symbol.iterator :"@@iterator"]' 未定义)

我已经尝试过使用 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.log('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。它是否超出了范围?
  • 你用两个 'r' 拼写了 aprrovals。还有一个“p”。
  • 作为一个普遍的观点,我在软件行业工作了 10 多年,总的来说,不是你的编程语言坏了。这并不是说您遇到了一些奇怪的边缘情况“在 for 循环中不能有 for 循环”或“它是否以某种方式奇怪地超出了范围”。 99% 的时间你都犯了一个简单的错误,而你只是还没有看到它:-)

标签: javascript arrays react-native


【解决方案1】:

第二个循环: for(let approval of task.taskupdates)

【讨论】:

  • 虽然此代码可以解决问题,including an explanation 说明如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请编辑您的答案以添加解释并说明适用的限制和假设。
猜你喜欢
  • 1970-01-01
  • 2018-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-06
  • 1970-01-01
相关资源
最近更新 更多