Javascript 数组操作 - 是否有更具声明性的方法?

标签 javascript arrays object

感谢您浏览这里。我正在使用 API,需要更改数据的格式。下面是返回数据的示例:

data: [
  { 
    status: "planned work",
    name: "123"
  },
  {
    status: "all good",
    name: "nqr"
  }
];

每条火车线路都有一个类似“123”或“nqr”的名称,我想将每列火车分成自己的对象,这样它看起来像这样:

data: [
  { 
    status: "planned work",
    name: "1"
  },
  { 
    status: "planned work",
    name: "2"
  },
  { 
    status: "planned work",
    name: "3"
  },
  {
    status: "all good",
    name: "n"
  },
  {
    status: "all good",
    name: "q"
  },
  {
    status: "all good",
    name: "r"
  }
];

我有一些工作代码,可以分割名称并使用嵌套的 .forEach 循环将项目推送到数组中。工作代码:

function formatLinesData(lines) {
  var trains = [];
  lines.forEach( line => {
    line.name.split("").forEach(train => {
      trains.push({name: train, status: line.status});
    });
  });
  return trains;
}

有没有一种方法可以在不使用嵌套循环的情况下完成此任务?如果您有的话,请寻找一种优雅的解决方案。

谢谢

最佳答案

您可以执行以下操作;

var data =  [
  { 
    status: "planned work",
    name: "123"
  },
  {
    status: "all good",
    name: "nqr"
  }
],

newData = [].concat(...data.map(o => o.name.split("").map(c => ({status: o.status, name: c}))));
console.log(newData);

关于Javascript 数组操作 - 是否有更具声明性的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39362724/

相关文章:

javascript - 使用 JavaScript 访问变量对象的属性

c - 使用 C 修改从索引开始的数组内容

Javascript 创建具有属性的对象作为动态对象

arrays - 在 swift 3 中本地存储类对象

javascript - 显示从相机拍摄的图像

javascript - 停止 jQuery 插件

javascript - 如何合并两个包含对象的数组

Java 对象优先级队列::检查对象成员的方法?

java - 不明确的方法调用 Assert 中的 assertEquals(Object, Object) 和 Assert 中的 assertEquals(double, double) 匹配 :

javascript - 我的网页如何判断用户是否放大了 View ?