谢谢你看看这里。我正在使用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;
}
有没有办法在没有嵌套循环的情况下实现这一目标?寻找一个优雅的解决方案,如果你有一个。
由于
答案 0 :(得分:2)
您可以使用reduce - 使用空数组初始化它,并迭代数据 数组使用你的逻辑。
data.reduce((prev,curr) => {
for (let i=0; i<curr.name.length; i++) {
prev.push({ name : curr.name[i], status : curr.status});
}
return prev;
},[]);
答案 1 :(得分:2)
您可以执行以下操作;
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);