将嵌套对象中的单值数组转换为单值 javascript
convert single value array within a nested object to a single value javascript
我有一个嵌套对象,我想在其中将单个值数组 group
转换为单个值:
real_data = [
[
{x: 1, group: [1]},
{x: 9, group: [2]},
{x: 3, group: [3]}
],
[
{x: 2, group: [1]},
{x: 4, group: [2]},
{x: 10, group: [3]}
],
[
{x: 1, group: [1]},
{x: 5, group: [2]},
{x: 12, group: [3]}
],
[],
[
{x: 1, group: [1]},
{x: 5, group: [2]},
{x: 12, group: [3]}
]
]
我试过在这里使用 map 但由于数组的嵌套性质一直在努力。我也尝试过一些嵌套的 for 循环,并为此苦苦挣扎。期望的输出是:
desired_output = [
[
{x: 1, group: 1},
{x: 9, group: 2},
{x: 3, group: 3}
],
[
{x: 2, group: 1},
{x: 4, group: 2},
{x: 10, group: 3}
],
[
{x: 1, group: 1},
{x: 5, group: 2},
{x: 12, group: 3}
],
[],
[
{x: 1, group: 1},
{x: 5, group: 2},
{x: 12, group: 3}
]
]
感谢任何帮助!!
根据所需的输出,您可以使用以下内容
real_data.map(o=>{
return o.map(p=>{
return {...p, group:parseInt(p.group.toString(),10)}
})
})
很简单。
- 循环完成外部数组
- 循环内部数组
- 在内部数组中设置
group
的值
real_data = [
[
{x: 1, group: [1]},
{x: 9, group: [2]},
{x: 3, group: [3]}
],
[
{x: 2, group: [1]},
{x: 4, group: [2]},
{x: 10, group: [3]}
],
[
{x: 1, group: [1]},
{x: 5, group: [2]},
{x: 12, group: [3]}
],
[],
[
{x: 1, group: [1]},
{x: 5, group: [2]},
{x: 12, group: [3]}
]
];
var desiredOutput = real_data.map( elements => {
let newElements = elements.map(element => {
element.group = element.group[0];
return element;
});
return newElements;
})
不修改原输入也能得到想要的结果-
const input =
[[{x:1,group:[1]},{x:9,group:[2]},{x:3,group:[3]}],[{x:2,group:[1]},{x:4,group:[2]},{x:10,group:[3]}],[{x:1,group:[1]},{x:5,group:[2]},{x:12,group:[3]}],[],[{x:1,group:[1]},{x:5,group:[2]},{x:12,group:[3]}]]
const output =
input.map(x => x.map(({ group: [group], ...y }) => ({ ...y, group })))
console.log(output)
[
[
{x:1,group:1},
{x:9,group:2},
{x:3,group:3}
],
[
{x:2,group:1},
{x:4,group:2},
{x:10,group:3}
],
[
{x:1,group:1},
{x:5,group:2},
{x:12,group:3}
],
[],
[
{x:1,group:1},
{x:5,group:2},
{x:12,group:3}
]
]
我有一个嵌套对象,我想在其中将单个值数组 group
转换为单个值:
real_data = [
[
{x: 1, group: [1]},
{x: 9, group: [2]},
{x: 3, group: [3]}
],
[
{x: 2, group: [1]},
{x: 4, group: [2]},
{x: 10, group: [3]}
],
[
{x: 1, group: [1]},
{x: 5, group: [2]},
{x: 12, group: [3]}
],
[],
[
{x: 1, group: [1]},
{x: 5, group: [2]},
{x: 12, group: [3]}
]
]
我试过在这里使用 map 但由于数组的嵌套性质一直在努力。我也尝试过一些嵌套的 for 循环,并为此苦苦挣扎。期望的输出是:
desired_output = [
[
{x: 1, group: 1},
{x: 9, group: 2},
{x: 3, group: 3}
],
[
{x: 2, group: 1},
{x: 4, group: 2},
{x: 10, group: 3}
],
[
{x: 1, group: 1},
{x: 5, group: 2},
{x: 12, group: 3}
],
[],
[
{x: 1, group: 1},
{x: 5, group: 2},
{x: 12, group: 3}
]
]
感谢任何帮助!!
根据所需的输出,您可以使用以下内容
real_data.map(o=>{
return o.map(p=>{
return {...p, group:parseInt(p.group.toString(),10)}
})
})
很简单。
- 循环完成外部数组
- 循环内部数组
- 在内部数组中设置
group
的值
real_data = [
[
{x: 1, group: [1]},
{x: 9, group: [2]},
{x: 3, group: [3]}
],
[
{x: 2, group: [1]},
{x: 4, group: [2]},
{x: 10, group: [3]}
],
[
{x: 1, group: [1]},
{x: 5, group: [2]},
{x: 12, group: [3]}
],
[],
[
{x: 1, group: [1]},
{x: 5, group: [2]},
{x: 12, group: [3]}
]
];
var desiredOutput = real_data.map( elements => {
let newElements = elements.map(element => {
element.group = element.group[0];
return element;
});
return newElements;
})
不修改原输入也能得到想要的结果-
const input =
[[{x:1,group:[1]},{x:9,group:[2]},{x:3,group:[3]}],[{x:2,group:[1]},{x:4,group:[2]},{x:10,group:[3]}],[{x:1,group:[1]},{x:5,group:[2]},{x:12,group:[3]}],[],[{x:1,group:[1]},{x:5,group:[2]},{x:12,group:[3]}]]
const output =
input.map(x => x.map(({ group: [group], ...y }) => ({ ...y, group })))
console.log(output)
[
[
{x:1,group:1},
{x:9,group:2},
{x:3,group:3}
],
[
{x:2,group:1},
{x:4,group:2},
{x:10,group:3}
],
[
{x:1,group:1},
{x:5,group:2},
{x:12,group:3}
],
[],
[
{x:1,group:1},
{x:5,group:2},
{x:12,group:3}
]
]