javascript - 如何展平嵌套的 forEach?

标签 javascript loops

我有以下输入:

 schema: [{
    fields: [{
      name: 'name',
      type: 'text',
      col: 10,
      value: ''
    }, {
      name: 'description',
      type: 'text',
      col: 2,
      value: ''
    }]
  }, {
    fields: [{
      name: 'password',
      type: 'text',
      col: 8,
      value: ''
    }, {
      name: 'confirmPassword',
      type: 'textarea',
      col: 4,
      value: ''
    }]
  }],

然后我像这样设置嵌套数组对象的:

updateField (name, value) {
  this.schema.forEach((formGroup, index) => {
    formGroup.fields.forEach(field => {
      if (field.name === name) field.value = value
    })
  })
},

有没有办法避免使用两个嵌套的forEach? (不使用像 Lodash 这样的库?)

最佳答案

您可以使用 reduce 和展开运算符来合并您的数组,然后在您的平面数组上使用 forEach 来展平您的数组:

updateField (name, value) {
  this.schema
    .reduce((memo, item) => [...memo, ...item.fields], [])
    .forEach(field => {
      if (field.name === name) field.value = value;
    });
}

关于javascript - 如何展平嵌套的 forEach?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43991397/

相关文章:

c - 如何在c中打印特定数据?

loops - Powershell自定义对象-不传递foreach变量

javascript - 为什么我的 Google 应用程序脚本出现系统标识符错误

javascript - Chrome 扩展 : sending data to window created with chrome. windows.create

javascript - 为什么 babel-standalone@6 在 Firefox 20 中不起作用?

loops - sas中宏的do循环的步长

php - FOR 循环同时从 $_POST 抓取部分数据

javascript - 使用 Graph API 的 Facebook 评论插件

javascript - 为什么这些 Javascript for 循环在 Firefox 上比在 Chrome/Safari 上慢得多?

C#/ASP.NET 遍历表