Javascript 如何向对象数组的现有键添加多个值?
我正在尝试使用Javascript 如何向对象数组的现有键添加多个值?,javascript,ecmascript-6,Javascript,Ecmascript 6,我正在尝试使用reduce()获取特定wicket的经济费率 示例数据: 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()
获取特定wicket的经济费率
示例数据:
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
aswicket
和value
aseconomy
获得所需的对象数组
我的代码:
const Economy = data.reduce( (a, {econ, wicket}) => {
a[wicket].push(econ);
},{})
我在上面的代码中得到了未定义的行为。如果您的
数据
是一个数组
,而不是对象
(它现在不是,至少不是有效的):
let数据=[
{wicket:0,econ:20},
{wicket:1,econ:10},
{wicket:3,econ:45},
{wicket:0,econ:15},
{wicket:1,econ:32}
];
让结果=数据。减少((acc,curr)=>{
if(acc[curr.wicket])acc[curr.wicket].push(curr.econ);
else acc[当前wicket]=[当前经济];
返回acc;
},{});
控制台日志(结果)
您可以使用reduce
对数组进行分组,如:
var data=[{“wicket”:0,“econ”:20},{“wicket”:1,“econ”:10},{“wicket”:3,“econ”:45},{“wicket”:0,“econ”:15},{“wicket”:1,“econ”:32};
var结果=数据减少((c,v)=>{
c[v.wicket]=c[v.wicket]| |[];//初始化该属性,因为它的空数组不存在
c[v.wicket].推(v.econ);
返回c;
}, {});
控制台日志(结果)
reduce
不是对象的原型方法data
是您上面编辑的问题代码中的一个对象。这一行->c[v.wicket]|【】
做什么?@stonerock基本上它将属性初始化为一个不存在的空数组。但是auccumerator初始化为{/code>对象,所以它不应该是c[v.wicket]|{
@stonerock我添加了一个解释。如果没有,请指定一个空数组,如c[0]=[]