Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 汇总数组的对象_Javascript_Arrays - Fatal编程技术网

Javascript 汇总数组的对象

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

我有一个订单数组。我不知道如何用价格和数量来总结订单。我想从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
    } ]
  } ]
}
我尝试了以下功能:

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
?每个
都是一个数组项数组。您应该包括想要得到的结果。我在解释你的需要时遇到了问题。