Javascript 转换嵌套数组->;阵列->;对象到数组->;对象=>;对象值:对象值
在下面的数据中。我想让它成为一个对象,其中一些值作为键,如下所示: 从这里开始:链接到整个数据(this.localObject) 到此处:Javascript 转换嵌套数组->;阵列->;对象到数组->;对象=>;对象值:对象值,javascript,arrays,angular,object,reduce,Javascript,Arrays,Angular,Object,Reduce,在下面的数据中。我想让它成为一个对象,其中一些值作为键,如下所示: 从这里开始:链接到整个数据(this.localObject) 到此处: const employees = [ { "EmployeeID": "100A", "11-19": "30"}, { "EmployeeID": "100A", "11-20": "40"}, { "EmployeeID": "100A", "11-21": "50"}, { "EmployeeID": "100A", "11
const employees = [
{ "EmployeeID": "100A", "11-19": "30"},
{ "EmployeeID": "100A", "11-20": "40"},
{ "EmployeeID": "100A", "11-21": "50"},
{ "EmployeeID": "100A", "11-22": "60"},
{ "EmployeeID": "100B", "11-19": "1"},
{ "EmployeeID": "100B", "11-20": "2"},
{ "EmployeeID": "100B", "11-21": "3"},
{ "EmployeeID": "100B", "11-22": "4"}
]
//and so on...
到目前为止,我已经尝试:
this.localData = this.localObject.employees;
const firstLevel = this.localData.map(x => x.aval);
firsLevel将为我提供一个更接近我需要的对象数组,现在我需要将的“start”值作为一个键和的“ava”值作为其自身对象容器中的值属性您可以使用
Array.flatMap
并使用Array.map
迭代其中的aval
,如下所示
const employees=[{
“雇员ID”:“100A”,
“名字”:“唐斯”,
“阿瓦尔”:[
{“开始”:“11-19”,“结束”:“2”,“ava”:“30”,“健康”:“4”},
{“开始”:“11-20”,“结束”:“2”,“ava”:“40”,“健康”:“4”},
{“开始”:“11-21”,“结束”:“2”,“ava”:“50”,“健康”:“4”},
{“开始”:“11-22”,“结束”:“2”,“ava”:“60”,“健康”:“4”}
]
},
{
“雇员ID”:“100B”,
“名字”:“麦肯齐”,
“阿瓦尔”:[
{“开始”:“11-19”,“结束”:“2”,“ava”:“1”,“健康”:“4”},
{“开始”:“11-20”,“结束”:“2”,“ava”:“2”,“健康”:“4”},
{“开始”:“11-21”,“结束”:“2”,“ava”:“3”,“健康”:“4”},
{“开始”:“11-22”,“结束”:“2”,“ava”:“4”,“健康”:“4”}
]
},
]
让res=employeed.flatMap({EmployeeID,aval})=>
aval.map(({start,ava})=>({EmployeeID[start]:ava})))
log(res)
您还需要迭代内部数组并构建单个数组
var数组=[{EmployeeID:“100A”,FirstName:“Downs”,aval:[{start:“11-19”,end:“2”,ava:“30”,health:“4”},{start:“11-20”,end:“2”,ava:“40”,health:“4”},{start:“11-22”,end:“2”,ava:“60”,health:“4”},{EmployeeID:“100B”,FirstName:“Mckenzie”,ava:[{start:“11-19”,结束:“2”,ava:“1”,健康:“4”},{开始:“11-20”,结束:“2”,ava:“2”,健康:“4”},{开始:“11-21”,结束:“2”,ava:“3”,健康:“4”},{开始:“11-22”,结束:“2”,ava:“4”,健康:“4”},
result=array.reduce((r,{EmployeeID,aval})=>[
R
…aval.map(({start,ava})=>({EmployeeID,[start]:ava}))
], []);
console.log(结果);
。作为控制台包装器{max height:100%!important;top:0;}
看起来,你是flatMap
的超级粉丝,它在edge中实际上不起作用……哦,是的,我是(在理解了它的威力之后)。考虑到“Edge”的情况,我怀疑它是否也支持其他ESNext功能,至少有些。但我们不应该因为Edge而错过任何新功能。:)伙计,我喜欢这个答案,但我使用的框架在ES6上有问题,无法很好地与FlatMap配合,他们正在研究解决方案,但没有问题@brohymm.:)很好…FlatMap
对于polyfillNice来说是微不足道的,我可以问一些好的资源来学习reduce()?。这不是我的强项。你可以从这里开始:,但我没有其他资源。只要经常尝试使用它。。。
this.localData = this.localObject.employees;
const firstLevel = this.localData.map(x => x.aval);