[英]js change structure of an json object
我有一个这样的数组:
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};
});
没有成功。 任何想法如何获得结果?
您可以获得对象值的平面数组。
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" } }], result = array.flatMap(Object.values); console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
假设数组中的对象始终具有一个可枚举属性,您可以使用map
和Object.values
:
array = array.map(obj => Object.values(obj)[0]);
现场示例:
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" }} ]; array = array.map(obj => Object.values(obj)[0]); console.log(array);
.as-console-wrapper { max-height: 100% !important; }
您可以简单地将数组中的每个项目映射到一个新项目,即原始项目的第一个键的值:
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 formatted = array.map(v => { for (let k in v) return v[k]; }); console.log(formatted);
尝试这个:
const oldData = [
{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"
}}
];
const newData = [];
for (let i = 0; i < oldData.length; i++) {
newData[i] = oldData[i][i+1];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.