gpt4 book ai didi

javascript将对象数组转换为相似但不同的结构

转载 作者:行者123 更新时间:2023-11-28 18:47:00 24 4
gpt4 key购买 nike

[注意:虽然类似于 this stack question ,由于初始变量的结构不同,我的问题有很大不同(IMO)。我的是一个数组,另一个提问者的是一个对象。我的数组包含嵌套对象/数组,后者包含名称-值对,其值与其他提问者中的对不同,没有语义识别。]

我有一个包含 24 个对象的大数组 (arr1)。 24 个对象中的每一个都包含一个对象,以及一个由六个其他对象组成的数组,如下所示:

var arr1 =
[
{'hour':1,'car':[{'audi':1377},{'bmw':716},{'ford':3819},{'mazda':67},{'toyota':11580},{'tesla':0}]},
{'hour':2,'car':[{'audi':1340},{'bmw':709},{'ford':3420},{'mazda':28},{'toyota':11583},{'tesla':0}]},
...etc, up to hour 24
];

如您所见,24 个对象中的每一个都代表一小时的汽车型号和里程数据。 (不明显的是,六个对象中每个对象的数值都代表英里。)

现在,我想将 arr1 中的每个对象转换为一个包含六个对象的数组,如下所示。因此,arr1 中第 1 小时的数据将转换为:

var arr2 = [{"car":"audi","miles":1377},{"car":"bmw","miles":716},{"car":"ford","miles":3819},{"car":"mazda","miles":67},{"car":"toyota","miles":11580},{"car":"tesla","miles":0}];

我该怎么做?我尝试过以下方法:

var hourx = 1;
var hour = arr1[hourx-1];
var car=hour.car;
for(var hourx1=0;hourx1<car.length;hourx1++){
var xx = car[hourx1];
var newobj = [];
for (var value in xx) {
var chartvar = newobj.push({car:value,miles:xx[value]});
var arr2 = newobj;
}
}

...但是如果我 console.log(arr2); 它只会给出一个对象的一个​​数组。

我被难住了。有人知道我该如何实现这一目标吗?

最佳答案

所以你想要一个数组的数组作为最终结果?

var arr1 = [
{'hour':1,'car':[{'audi':1377},{'bmw':716},{'ford':3819},{'mazda':67},{'toyota':11580},{'tesla':0}]},
{'hour':2,'car':[{'audi':1340},{'bmw':709},{'ford':3420},{'mazda':28},{'toyota':11583},{'tesla':0}]}
];

var arr2 = arr1.map(function(hour){
return hour.car.map(function(car){
var carName = Object.keys(car)[0];
return {
"car": carName,
"miles": car[carName]
}
})
})

https://jsfiddle.net/1jjzeeyz/

关于javascript将对象数组转换为相似但不同的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35136080/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com