如何为对象数组的现有键添加多个值?

时间:2018-06-26 14:53:47

标签: javascript ecmascript-6

我正在尝试使用php artisan job:dispatch YourJobNameHere 来获取特定检票口的经济费率。

示例数据:

reduce()

我希望 var data = [ {wicket:0, econ:20 }, {wicket:1, econ:10 }, {wicket:3, econ:45 }, {wicket:0, econ:15 }, {wicket:1, econ:32 } ] 方法返回一个如下所示的对象数组:

reduce()

我想做的是用对象初始化累加器,但是在0: 20, 15 1: 10, 32 3: 45 方法中,我无法弄清楚如何用reduce()作为key value来获取所需的对象数组。并且wicketvalues

我的代码:

economy

使用上述代码,我得到未定义的行为。

2 个答案:

答案 0 :(得分:3)

如果您的dataArray而不是Object(目前还不是,至少不是有效的),那么:

let data = [
    {wicket:0, econ:20 },
    {wicket:1, econ:10 },
    {wicket:3, econ:45 },
    {wicket:0, econ:15 },
    {wicket:1, econ:32 }
];

let result = data.reduce((acc, curr) => {
  if(acc[curr.wicket]) acc[curr.wicket].push(curr.econ);
  else acc[curr.wicket] = [curr.econ];
  return acc;
},{});
console.log(result);

答案 1 :(得分:1)

您可以使用reduce对数组进行分组,例如:

var data = [{"wicket":0,"econ":20},{"wicket":1,"econ":10},{"wicket":3,"econ":45},{"wicket":0,"econ":15},{"wicket":1,"econ":32}];

var result = data.reduce((c, v) => {
  c[v.wicket] = c[v.wicket] || []; //Initiate the property as empty array of it does not exist
  c[v.wicket].push(v.econ);
  return c;
}, {});

console.log(result);


||是一个OR运算符。

这意味着如果c[v.wicket]存在,它将再次将其分配给c[v.wicket]。如果没有,请分配一个空数组[]

c[v.wicket] = c[v.wicket] || [];