Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.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_Ecmascript 6 - Fatal编程技术网

Javascript 将对象数组的值映射到对象属性

Javascript 将对象数组的值映射到对象属性,javascript,ecmascript-6,Javascript,Ecmascript 6,如何将对象值数组转换为对象属性?我想把这个 const array = [ { "age_group": [ { "range": "0-20", "total_count": 100 }, { "range": "21-30", "total_count": 200 }, ], "machine": { "name": "SK2DS0011",

如何将对象值数组转换为对象属性?我想把这个

const array = [
  {
    "age_group": [
      {
        "range": "0-20",
        "total_count": 100
      },
      {
        "range": "21-30",
        "total_count": 200
      },
    ],
    "machine": {
      "name": "SK2DS0011",
    }
  }
]
进入这个

[{name: "SK2DS0011", "0-20": 100, "21-30": 200}]
我一直在使用reduce

temp_arr = ori.reduce((accum, arr, i) => {
  return accum['abc'] = arr.age_data.map(o => ({[o.range]: o.count}))
},{})

可能我在reduce中使用了map错误。

在不使用
reduce
的情况下检查此解决方案。而是使用
map
构建新数组:

const arr=[
{
“年龄组”:[
{
“范围”:“0-20”,
“总计数”:100
},
{
“范围”:“21-30”,
“总数”:200
},
],
“机器”:{
“名称”:“SK2DS0011”,
}
}
];
//使用“映射”可使用所需属性格式化新数组
让结果=arr.map((x)=>{
//获取“name”属性
设obj={
名称:x.machine.name,
};
//迭代“age_group”数组,并为每个元素添加一个属性
var thisTotal=0;
for(x.age_组中的var k){
设a=x.age_群[k];
obj[a.范围]=a.总计数;
//将此范围添加到总数中
thisTotal+=总计数;
}
//添加“total”属性
obj.total=此总数;
//返回最终数组
返回obj;
});

控制台日志(结果)
在不使用
reduce
的情况下检查此解决方案。而是使用
map
构建新数组:

const arr=[
{
“年龄组”:[
{
“范围”:“0-20”,
“总计数”:100
},
{
“范围”:“21-30”,
“总数”:200
},
],
“机器”:{
“名称”:“SK2DS0011”,
}
}
];
//使用“映射”可使用所需属性格式化新数组
让结果=arr.map((x)=>{
//获取“name”属性
设obj={
名称:x.machine.name,
};
//迭代“age_group”数组,并为每个元素添加一个属性
var thisTotal=0;
for(x.age_组中的var k){
设a=x.age_群[k];
obj[a.范围]=a.总计数;
//将此范围添加到总数中
thisTotal+=总计数;
}
//添加“total”属性
obj.total=此总数;
//返回最终数组
返回obj;
});
控制台日志(结果)
您可以使用
数组#map
生成对象数组。对于每个
年龄组
,您可以使用
数组#映射
、排列语法和
对象.assign()
创建范围和总计数对象。您可以使用
array\u reduce
生成所有范围的总和

const数组=[{“年龄组”:[{“范围”:“0-20”,“总计数”:100},{“范围”:“21-30”,“总计数”:200},],“机器”:{“名称”:“SK2DS0011”,},
结果=数组.map({age\u group,machine})=>{
const{name}=machine;
const obj=Object.assign(…age_group.map({range,total_count})=>({[range]:total_count}));
const total=年龄组。reduce((s,o)=>s++o.total\u计数,0);
返回{name,…obj,total};
});
控制台日志(结果)
您可以使用
数组#map
生成对象数组。对于每个
年龄组
,您可以使用
数组#映射
、排列语法和
对象.assign()
创建范围和总计数对象。您可以使用
array\u reduce
生成所有范围的总和

const数组=[{“年龄组”:[{“范围”:“0-20”,“总计数”:100},{“范围”:“21-30”,“总计数”:200},],“机器”:{“名称”:“SK2DS0011”,},
结果=数组.map({age\u group,machine})=>{
const{name}=machine;
const obj=Object.assign(…age_group.map({range,total_count})=>({[range]:total_count}));
const total=年龄组。reduce((s,o)=>s++o.total\u计数,0);
返回{name,…obj,total};
});

控制台日志(结果)你可以解释得更多一点,而不仅仅是转储代码可以使用函数技术吗?如果我想要一个属性调用总计,它汇总了所有范围怎么办?你可以解释得更多一点,而不仅仅是转储代码可以使用函数技术吗?如果我想要一个属性调用总计,它汇总了所有范围怎么办?很好,但是这个太多的破坏性版本让东西很难读。不错,但是这个太多的破坏性版本让东西很难读。