Javascript循环问题和将嵌套对象转换为数组
在下面的数组中,我试图将“reporting”对象转换为一个对象数组。 下面是我如何尝试的:Javascript循环问题和将嵌套对象转换为数组,javascript,Javascript,在下面的数组中,我试图将“reporting”对象转换为一个对象数组。 下面是我如何尝试的: const data = [{ m_id: '61', reporting: { 0: { report_cd: 'L', report_category: 'Light Vehicles' }, 1: { report_cd: 'M', report_category: 'Motorcycles'
const data = [{
m_id: '61',
reporting: {
0: {
report_cd: 'L',
report_category: 'Light Vehicles'
},
1: {
report_cd: 'M',
report_category: 'Motorcycles'
}
}
},
{
m_id: '62',
reporting: {
0: {
report_cd: 'L',
report_category: ' Extra Light Vehicles'
},
1: {
report_cd: 'M',
report_category: 'Bike'
},
2: {
report_cd: 'H',
report_category: 'Extra Heavy'
}
}
}
];
var arr = [];
for (let j = 0; j < data.length; j++) {
let keys = Object.keys(data[j].reporting);
for (var i = 0, n = keys.length; i < n; i++) {
var key = keys[i];
arr[key] = data[j].reporting[key];
}
data[j].reporting = arr;
}
console.log(data);
预期产出:
[{
"m_id": "61",
"reporting": [{
"report_cd": "L",
"report_category": "Light Vehicles"
}, {
"report_cd": "M",
"report_category": "Motorcycles"
}]
}, {
"m_id": "62",
"reporting": [{
"report_cd": "L",
"report_category": " Extra Light Vehicles"
}, {
"report_cd": "M",
"report_category": "Bike"
}, {
"report_cd": "H",
"report_category": "Extra Heavy"
}]
}]
代码的问题在于,由于数组是引用类型,在第二次迭代中使用相同的数组(
var arr
),因此也会修改第一个对象的报告
数组
使用映射
和对象的替代方法。值
:
const数据=[{
m_id:'61',
报告:{
0: {
报告光盘:“L”,
报告类别:“轻型车辆”
},
1: {
报告光盘:“M”,
报告类别:“摩托车”
}
}
},
{
m_id:'62',
报告:{
0: {
报告光盘:“L”,
报告类别:“超轻型车辆”
},
1: {
报告光盘:“M”,
报告类别:“自行车”
},
2: {
报告光盘:“H”,
报告类别:“超重型”
}
}
}
];
const result=data.map(el=>({…el,reporting:Object.values(el.reporting)}))
console.log(result)
代码的问题是,由于数组是引用类型,在第二次迭代中使用相同的数组(var arr
),因此也会修改第一个对象的报告
数组
使用映射
和对象的替代方法。值
:
const数据=[{
m_id:'61',
报告:{
0: {
报告光盘:“L”,
报告类别:“轻型车辆”
},
1: {
报告光盘:“M”,
报告类别:“摩托车”
}
}
},
{
m_id:'62',
报告:{
0: {
报告光盘:“L”,
报告类别:“超轻型车辆”
},
1: {
报告光盘:“M”,
报告类别:“自行车”
},
2: {
报告光盘:“H”,
报告类别:“超重型”
}
}
}
];
const result=data.map(el=>({…el,reporting:Object.values(el.reporting)}))
console.log(result)
您可以使用Object.keys为数据对象内的报表创建数组
const数据=[{
m_id:'61',
报告:{
0: {
报告光盘:“L”,
报告类别:“轻型车辆”
},
1: {
报告光盘:“M”,
报告类别:“摩托车”
}
}
},
{
m_id:'62',
报告:{
0: {
报告光盘:“L”,
报告类别:“超轻型车辆”
},
1: {
报告光盘:“M”,
报告类别:“自行车”
},
2: {
报告光盘:“H”,
报告类别:“超重型”
}
}
}
];
const result=data.map(x=>({
…x,
报告:Object.keys(x.reporting).map(key=>x.reporting[key])
}))
console.log(result)
您可以使用Object.keys为数据对象内的报表创建数组
const数据=[{
m_id:'61',
报告:{
0: {
报告光盘:“L”,
报告类别:“轻型车辆”
},
1: {
报告光盘:“M”,
报告类别:“摩托车”
}
}
},
{
m_id:'62',
报告:{
0: {
报告光盘:“L”,
报告类别:“超轻型车辆”
},
1: {
报告光盘:“M”,
报告类别:“自行车”
},
2: {
报告光盘:“H”,
报告类别:“超重型”
}
}
}
];
const result=data.map(x=>({
…x,
报告:Object.keys(x.reporting).map(key=>x.reporting[key])
}))
console.log(result)
Why notObject.keys(x.reporting).map(key=>x.reporting[key])
应用了建议的更改Why notObject.keys(x.reporting).map(key=>x.reporting[key])
应用了建议的更改
[{
"m_id": "61",
"reporting": [{
"report_cd": "L",
"report_category": "Light Vehicles"
}, {
"report_cd": "M",
"report_category": "Motorcycles"
}]
}, {
"m_id": "62",
"reporting": [{
"report_cd": "L",
"report_category": " Extra Light Vehicles"
}, {
"report_cd": "M",
"report_category": "Bike"
}, {
"report_cd": "H",
"report_category": "Extra Heavy"
}]
}]