Javascript 使用扩展运算符重构遍历对象数组

Javascript 使用扩展运算符重构遍历对象数组,javascript,destructuring,Javascript,Destructuring,函数main(){ 让昨天的sorders=[ { id:1, 订单行:[{ 项目名称:“项目01”, 数量:1 }, { 项目名称:“项目02”, 数量:3 }, { 项目名称:“项目03”, 数量:25 }, { 项目名称:“项目04”, 数量:12 }, ], }, { id:2, 订单行:[{ 项目名称:“项目01”, 数量:1 }, { 项目名称:“项目08”, 数量:42 }, { 项目名称:“项目09”, 数量:13 }, { 项目名称:“项目12”, 数量:37 }, ], },

函数main(){
让昨天的sorders=[
{
id:1,
订单行:[{
项目名称:“项目01”,
数量:1
},
{
项目名称:“项目02”,
数量:3
},
{
项目名称:“项目03”,
数量:25
},
{
项目名称:“项目04”,
数量:12
},
],
},
{
id:2,
订单行:[{
项目名称:“项目01”,
数量:1
},
{
项目名称:“项目08”,
数量:42
},
{
项目名称:“项目09”,
数量:13
},
{
项目名称:“项目12”,
数量:37
},
],
},
{
id:3,
订单行:[{
项目名称:“项目12”,
数量:16
}, ],
},
{
id:4,
订单行:[{
项目名称:“项目10”,
数量:11
},
{
项目名称:“项目11”,
数量:10
},
],
},
{
id:5,
订单行:[{
项目名称:“项目06”,
数量:7
},
{
项目名称:“项目07”,
数量:2
},
{
项目名称:“项目12”,
数量:14
},
],
},
{
id:6,
订单行:[{
项目名称:“项目05”,
数量:17
}, ],
},
{
id:7,
订单行:[{
项目名称:“项目03”,
数量:5
},
{
项目名称:“项目07”,
数量:2
},
],
},
{
id:8,
订单行:[{
项目名称:“项目02”,
数量:13
},
{
项目名称:“项目07”,
数量:7
},
{
项目名称:“项目09”,
数量:2
},
],
},
{
id:9,
订单行:[{
项目名称:“项目01”,
数量:4
},
{
项目名称:“项目06”,
数量:17
},
{
项目名称:“项目07”,
数量:3
},
],
},
{
id:10,
订单行:[{
项目名称:“项目11”,
数量:12
},
{
项目名称:“项目12”,
数量:1
},
],
}
],
结果=Array.from(
昨天的订单减少((根据{
订单线
}) => {
orderLines.forEach(({
项目名称,
量
})=>acc.set(itemName,(acc.get(itemName)| | 0)+数量);
返回acc;
},新地图),([itemName,quantity])=>({
项目名称,
量
}));

}
为什么要用扩展语法文字替换
数组.from
<代码>数组。从调用是一个非常好的函数,可以从映射创建数组。此外,您已经在尽可能地使用解构-您想更改什么?@Bergi是的,我同意,只是想看看使用
扩展运算符的不同方法,以及如何安排。我澄清了关于数组的解构的声明。from(x)
主要等同于
[…x]
,但可读性并没有好处。此外,如果使用了
Array.from
的第二个参数(如此处),则不能仅使用扩展语法数组文字,至少必须使用
.map()
。关于在中编辑的其他问题(请不要!),请参阅。(顺便说一句,
result
并没有声明为函数,它是一个
变量用数组初始化)@Bergi ah gotcha,谢谢,回答了我的所有问题为什么要用扩展语法文字替换
数组<代码>数组。从
调用是一个非常好的函数,可以从映射创建数组。此外,您已经在尽可能地使用解构-您想更改什么?@Bergi是的,我同意,只是想看看使用
扩展运算符的不同方法,以及如何安排。我澄清了关于数组的解构的声明。from(x)
主要等同于
[…x]
,但可读性并没有好处。此外,如果使用了
Array.from
的第二个参数(如此处),则不能仅使用扩展语法数组文字,至少必须使用
.map()
。关于在中编辑的其他问题(请不要!),请参阅。(顺便说一句,
result
不是作为函数声明的,它是一个
let
变量,用数组初始化)@Bergi ah gotcha,谢谢,回答了我所有的问题