Javascript js更改json对象的结构
我有这样一个数组:Javascript js更改json对象的结构,javascript,arrays,json,Javascript,Arrays,Json,我有这样一个数组: let array = [ {1: { "date": "2014-04-23 00:00:00", "volumetrie": "22458" }}, {2: { "date": "2014-05-02 00:00:00", "volumetrie": "30585" }}, {3: { "date": "2014-03-27 00:
let array = [
{1: {
"date": "2014-04-23 00:00:00",
"volumetrie": "22458"
}},
{2: {
"date": "2014-05-02 00:00:00",
"volumetrie": "30585"
}},
{3: {
"date": "2014-03-27 00:00:00",
"volumetrie": "49536"
}}
]
let array = [
{
"date": "2014-04-23 00:00:00",
"volumetrie": "22458"
},
{
"date": "2014-05-02 00:00:00",
"volumetrie": "30585"
},
{
"date": "2014-03-27 00:00:00",
"volumetrie": "49536"
}
]
但我需要这样:
let array = [
{1: {
"date": "2014-04-23 00:00:00",
"volumetrie": "22458"
}},
{2: {
"date": "2014-05-02 00:00:00",
"volumetrie": "30585"
}},
{3: {
"date": "2014-03-27 00:00:00",
"volumetrie": "49536"
}}
]
let array = [
{
"date": "2014-04-23 00:00:00",
"volumetrie": "22458"
},
{
"date": "2014-05-02 00:00:00",
"volumetrie": "30585"
},
{
"date": "2014-03-27 00:00:00",
"volumetrie": "49536"
}
]
我试图改变这一点,比如:
array.forEach(function(e){
newData.push(e);
});
但这是行不通的。不支持推送
下一次尝试是:
let newData = {};
array.forEach(function(e){
newData = {...newData, ...e};
});
没有成功。您知道如何获得结果吗?假设数组中的对象始终具有一个可枚举属性,您可以使用map和Object.values执行此操作: 实例: 让数组=[ {1: { 日期:2014-04-23 00:00:00, 容量:22458 }}, {2: { 日期:2014-05-02 00:00:00, 容量:30585 }}, {3: { 日期:2014-03-27 00:00:00, 容量:49536 }} ]; array=array.mapobj=>Object.valuesobj[0]; console.logarray; .作为控制台包装{ 最大高度:100%!重要;
} 假设数组中的对象始终具有一个可枚举属性,则可以使用map和Object.values执行此操作: 实例: 让数组=[ {1: { 日期:2014-04-23 00:00:00, 容量:22458 }}, {2: { 日期:2014-05-02 00:00:00, 容量:30585 }}, {3: { 日期:2014-03-27 00:00:00, 容量:49536 }} ]; array=array.mapobj=>Object.valuesobj[0]; console.logarray; .作为控制台包装{ 最大高度:100%!重要;
} 您只需将数组中的每个项映射到新项,即原始项的第一个键的值: 让数组=[ { 1: { 日期:2014-04-23 00:00:00, 容量:22458 }}, { 2: { 日期:2014-05-02 00:00:00, 容量:30585 }}, { 3: { 日期:2014-03-27 00:00:00, 容量:49536 }} ]; let formatted=array.mapv=>{for let k in v返回v[k];};
console.logformatted 您只需将数组中的每个项映射到新项,即原始项的第一个键的值: 让数组=[ { 1: { 日期:2014-04-23 00:00:00, 容量:22458 }}, { 2: { 日期:2014-05-02 00:00:00, 容量:30585 }}, { 3: { 日期:2014-03-27 00:00:00, 容量:49536 }} ]; let formatted=array.mapv=>{for let k in v返回v[k];};
console.logformatted 您可以获得对象值的平面数组 让数组=[{1:{date:2014-04-23 00:00:00,volumetrie:22458},{2:{date:2014-05-02 00:00:00,volumetrie:30585},{3:{date:2014-03-27 00:00:00,volumetrie:49536}], 结果=array.flatMapObject.values; console.logresult;
.as console wrapper{max height:100%!important;top:0;}您可以获得对象值的平面数组 让数组=[{1:{date:2014-04-23 00:00:00,volumetrie:22458},{2:{date:2014-05-02 00:00:00,volumetrie:30585},{3:{date:2014-03-27 00:00:00,volumetrie:49536}], 结果=array.flatMapObject.values; console.logresult; .作为控制台包装{最大高度:100%!重要;顶部:0;}尝试以下操作: 常数数据=[ {1: { 日期:2014-04-23 00:00:00, 容量:22458 }}, {2: { 日期:2014-05-02 00:00:00, 容量:30585 }}, {3: { 日期:2014-03-27 00:00:00, 容量:49536 }} ]; 常量newData=[]; 对于let i=0;i
对象在每个项中都有三个对象。@FishWave-单击“运行代码段”,它不会提供完全平坦的内容。除非smooshMap从未使用此代码,否则我只返回三个对象中每个对象的第一个项……根据给定的数据,我假设此代码中每个数组项只有一个项,我只得到了三个对象中每个对象的第一个条目……根据给定的数据,我假设每个数组项只有一个条目将发布相同的答案:将发布相同的答案: