Javascript数组操作——是否有更声明性的方法?
Javascript Array Manipulation - Is there a more declarative approach?
谢谢你看这里。我正在使用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);
您可以使用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;
},[]);
相关文章:
- Javascript库对象方法声明
- Javascript:如何声明非全局静态方法
- 处理复杂类型时的声明方法
- 如何:在JavaScript对象中声明的Angular Factory方法
- 声明JavaScript选项对象的正确方法
- 正在使用AngularJS获取集合中的选定元素.声明性方法
- 声明Javascript名称空间的两种方法之间的区别
- jQuery命名空间声明和模块化方法
- 有没有一种方法可以使用函数参数的值来声明变量
- 用javascript在一个对象的两个键上声明两个数组的简洁方法是什么
- 在OPP JS中,您可以从构造函数访问原型函数内部声明的方法
- 用JavaScript声明数组的方法是什么
- 在原型上声明新方法
- Javascript OOP - 声明对象的方法
- 在 javascript 中 for 循环的每次迭代中声明一个新的、唯一的变量是一种好方法
- 如何在 JavaScript 中声明公共方法和私有方法
- 使用在另一个服务方法中声明为模块模式的服务方法之一
- 当使用原型方法声明从回调访问对象时,如何访问对象的其他方法
- 方法声明(不是定义)在JavaScript中是可能的吗?
- JavaScript中不同的方法声明有什么区别?