Javascript 汇总数组的对象
我有一个订单数组。我不知道如何用价格和数量来总结订单。我想从item object中得到价格和数量并求和,但怎么能做到呢Javascript 汇总数组的对象,javascript,arrays,Javascript,Arrays,我有一个订单数组。我不知道如何用价格和数量来总结订单。我想从item object中得到价格和数量并求和,但怎么能做到呢 { "orders" : [ null, { "date" : "2018-07-09 10:07:18", "item" : [ { "name" : "Warmer Topfenstrudel", "price" : 3.9, "quantity" : 1 } ] }, { "date" : "2
{
"orders" : [ null, {
"date" : "2018-07-09 10:07:18",
"item" : [ {
"name" : "Warmer Topfenstrudel",
"price" : 3.9,
"quantity" : 1
} ]
}, {
"date" : "2018-07-09 10:07:30",
"item" : [ {
"name" : "Warmer Topfenstrudel",
"price" : 3.9,
"quantity" : 1
} ]
}, {
"date" : "2018-07-09 15:07:18",
"item" : [ {
"name" : "Piccata Milanese",
"price" : 12.9,
"quantity" : 3
} ]
}, {
"date" : "2018-06-13 10:07:18",
"item" : [ {
"name" : "Wiener Schnitzel vom Schwein",
"price" : 9.9,
"quantity" : 2
} ]
} ]
}
我尝试了以下功能:
getTotal: function(arr) {
return arr.reduce((sum, i) => {
return sum + (i.price * i.quantity)
},0)
},
问题是,在对所有订单进行求和之前,需要对每个
订单
元素的项
数组求和
getTotal: function(arr) {
return arr.reduce((sum, order) => {
return sum + order.items.reduce((itemSum, item) => (
itemSum + (item.price * item.quantity)
), 0)
},0)
},
问题是,在对所有订单进行求和之前,需要对每个
订单
元素的项
数组求和
getTotal: function(arr) {
return arr.reduce((sum, order) => {
return sum + order.items.reduce((itemSum, item) => (
itemSum + (item.price * item.quantity)
), 0)
},0)
},
item
是一个数组,因此您也需要对其使用reduce
,或者如果您知道只有一个项,则使用数组的第一个元素
您还需要检查数组中的元素是否为实际顺序,因为数组中有null
var obj={
订单:[
无效的
{
日期:“2018-07-09 10:07:18”,
项目:[
{
名称:“温暖的Topfenstrudel”,
价格:3.9,
数量:1
}
]
},
{
日期:“2018-07-09 10:07:30”,
项目:[
{
名称:“温暖的Topfenstrudel”,
价格:3.9,
数量:1
}
]
},
{
日期:“2018-07-09 15:07:18”,
项目:[
{
名称:“米兰皮卡塔”,
价格:12.9,
数量:3
}
]
},
{
日期:“2018-06-13 10:07:18”,
项目:[
{
名称:“Wiener Schnitzel vom Schwein”,
价格:9.9,
数量:2
}
]
}
]
};
var result=obj.orders.reduce((结果,订单)=>{
返回!命令
?结果
:结果+订单.项目.减少((成本,项目)=>{
退货成本+料件价格*料件数量;
}, 0);
}, 0);
控制台日志(结果)
item
是一个数组,因此您也需要在该数组上使用reduce
,或者如果您知道只有一个项,则使用数组的第一个元素
您还需要检查数组中的元素是否为实际顺序,因为数组中有null
var obj={
订单:[
无效的
{
日期:“2018-07-09 10:07:18”,
项目:[
{
名称:“温暖的Topfenstrudel”,
价格:3.9,
数量:1
}
]
},
{
日期:“2018-07-09 10:07:30”,
项目:[
{
名称:“温暖的Topfenstrudel”,
价格:3.9,
数量:1
}
]
},
{
日期:“2018-07-09 15:07:18”,
项目:[
{
名称:“米兰皮卡塔”,
价格:12.9,
数量:3
}
]
},
{
日期:“2018-06-13 10:07:18”,
项目:[
{
名称:“Wiener Schnitzel vom Schwein”,
价格:9.9,
数量:2
}
]
}
]
};
var result=obj.orders.reduce((结果,订单)=>{
返回!命令
?结果
:结果+订单.项目.减少((成本,项目)=>{
退货成本+料件价格*料件数量;
}, 0);
}, 0);
控制台日志(结果)代码>
我想从item object中得到价格和数量并求和,但怎么能做到呢
{
"orders" : [ null, {
"date" : "2018-07-09 10:07:18",
"item" : [ {
"name" : "Warmer Topfenstrudel",
"price" : 3.9,
"quantity" : 1
} ]
}, {
"date" : "2018-07-09 10:07:30",
"item" : [ {
"name" : "Warmer Topfenstrudel",
"price" : 3.9,
"quantity" : 1
} ]
}, {
"date" : "2018-07-09 15:07:18",
"item" : [ {
"name" : "Piccata Milanese",
"price" : 12.9,
"quantity" : 3
} ]
}, {
"date" : "2018-06-13 10:07:18",
"item" : [ {
"name" : "Wiener Schnitzel vom Schwein",
"price" : 9.9,
"quantity" : 2
} ]
} ]
}
其中一种方法是:
var j={
“订单”:[null{
“日期”:“2018-07-09 10:07:18”,
“项目”:[{
“名称”:“温暖的托普芬斯特拉德尔”,
“价格”:3.9,
“数量”:1
}]
}, {
“日期”:“2018-07-09 10:07:30”,
“项目”:[{
“名称”:“温暖的托普芬斯特拉德尔”,
“价格”:3.9,
“数量”:1
}]
}, {
“日期”:“2018-07-09 15:07:18”,
“项目”:[{
“名称”:“米兰皮卡塔”,
“价格”:12.9,
“数量”:3
}]
}, {
“日期”:“2018-06-13 10:07:18”,
“项目”:[{
“名称”:“Wiener Schnitzel vom Schwein”,
“价格”:9.9,
“数量”:2
}]
}]
}
var ar=j.订单,
总和=0;
//迭代对象数组键
Object.keys(ar.forEach)(函数(i){
//总结价格*数量
总和+=ar[i]==null?0:(ar[i]。物料[0]。价格*ar[i]。物料[0]。数量)
控制台日志(总和);
})
我想从item object中得到价格和数量并求和,但怎么能做到呢
{
"orders" : [ null, {
"date" : "2018-07-09 10:07:18",
"item" : [ {
"name" : "Warmer Topfenstrudel",
"price" : 3.9,
"quantity" : 1
} ]
}, {
"date" : "2018-07-09 10:07:30",
"item" : [ {
"name" : "Warmer Topfenstrudel",
"price" : 3.9,
"quantity" : 1
} ]
}, {
"date" : "2018-07-09 15:07:18",
"item" : [ {
"name" : "Piccata Milanese",
"price" : 12.9,
"quantity" : 3
} ]
}, {
"date" : "2018-06-13 10:07:18",
"item" : [ {
"name" : "Wiener Schnitzel vom Schwein",
"price" : 9.9,
"quantity" : 2
} ]
} ]
}
其中一种方法是:
var j={
“订单”:[null{
“日期”:“2018-07-09 10:07:18”,
“项目”:[{
“名称”:“温暖的托普芬斯特拉德尔”,
“价格”:3.9,
“数量”:1
}]
}, {
“日期”:“2018-07-09 10:07:30”,
“项目”:[{
“名称”:“温暖的托普芬斯特拉德尔”,
“价格”:3.9,
“数量”:1
}]
}, {
“日期”:“2018-07-09 15:07:18”,
“项目”:[{
“名称”:“米兰皮卡塔”,
“价格”:12.9,
“数量”:3
}]
}, {
“日期”:“2018-06-13 10:07:18”,
“项目”:[{
“名称”:“Wiener Schnitzel vom Schwein”,
“价格”:9.9,
“数量”:2
}]
}]
}
var ar=j.订单,
总和=0;
//迭代对象数组键
Object.keys(ar.forEach)(函数(i){
//总结价格*数量
总和+=ar[i]==null?0:(ar[i]。物料[0]。价格*ar[i]。物料[0]。数量)
控制台日志(总和);
})
您希望生成的数组是什么样子的?到目前为止您尝试了什么?您将什么传递到getTotal()
作为arr
?每个项
都是一个数组项数组。您应该包括想要得到的结果。我在解释您的需求时遇到问题。您希望生成的数组是什么样子的?到目前为止您尝试了什么?您将什么传递到getTotal()
作为arr
?每个项
都是一个数组项数组。您应该包括想要得到的结果。我在解释你的需要时遇到了问题。