Javascript: 如何将包含对象的对象转换并映射到数组中?
Javascript: How to convert and map an object containing objects into an array?
在Javascript中如何映射和转换这个对象:
{
0: {k1 : v1},
2: {k2 : v2}
}
到这个数组:
[
{
label: k1,
value: v1
},
{
label: k2,
value: v2
}
]
obs.: 一行字很好,但欢迎所有答案。
我得不到想要的结果,但我盲目地遵循了这样的公式:
const objectMap = (obj, fn) =>
Object.fromEntries(
Object.entries(obj).map(
([k, v], i) => [i, fn(v, k, i)]
)
)
const cfieldsFinal = objectMap(modcf, (k, v) => ({
label: v,
value: k
}))
这几乎就是我所需要的,除了它仍然是一个对象:
output => {0: {label: k1, value: v1}, 1: {label: k2, value: v2}}
因此,只有像我这样的完全菜鸟才会卡在这部分...
const foo = {
0: {
k1: "v1"
},
2: {
k2: "v2"
}
};
/*
[
{
label: k1,
value: v1
},
{
label: k2,
value: v2
}
]
*/
const oe = Object.entries;
const bar = oe(foo).map(([k, v]) => {
const [label, value] = oe(v)[0];
return {
label,
value
};
});
console.log(bar);
你已经很接近了,你只需要手动构造对象。首先使用 Array.values()
将 data
转换为数组。使用 Array.flatMap()
迭代数组以展平由内部映射创建的子数组。将每个对象转换为 [key, value] 对的数组。映射每一对,并创建一个对象。
const data = {0: { k1: 'v1' }, 2: { k2: 'v2' }}
const result = Object.values(data) // convert data to an array
.flatMap(o => // map to a flattend array
Object.entries(o) // get the entries of each object
.map(([label, value]) => ({ label, value })) // create a new object from each entry
)
console.log(result)
在Javascript中如何映射和转换这个对象:
{
0: {k1 : v1},
2: {k2 : v2}
}
到这个数组:
[
{
label: k1,
value: v1
},
{
label: k2,
value: v2
}
]
obs.: 一行字很好,但欢迎所有答案。
我得不到想要的结果,但我盲目地遵循了这样的公式:
const objectMap = (obj, fn) =>
Object.fromEntries(
Object.entries(obj).map(
([k, v], i) => [i, fn(v, k, i)]
)
)
const cfieldsFinal = objectMap(modcf, (k, v) => ({
label: v,
value: k
}))
这几乎就是我所需要的,除了它仍然是一个对象:
output => {0: {label: k1, value: v1}, 1: {label: k2, value: v2}}
因此,只有像我这样的完全菜鸟才会卡在这部分...
const foo = {
0: {
k1: "v1"
},
2: {
k2: "v2"
}
};
/*
[
{
label: k1,
value: v1
},
{
label: k2,
value: v2
}
]
*/
const oe = Object.entries;
const bar = oe(foo).map(([k, v]) => {
const [label, value] = oe(v)[0];
return {
label,
value
};
});
console.log(bar);
你已经很接近了,你只需要手动构造对象。首先使用 Array.values()
将 data
转换为数组。使用 Array.flatMap()
迭代数组以展平由内部映射创建的子数组。将每个对象转换为 [key, value] 对的数组。映射每一对,并创建一个对象。
const data = {0: { k1: 'v1' }, 2: { k2: 'v2' }}
const result = Object.values(data) // convert data to an array
.flatMap(o => // map to a flattend array
Object.entries(o) // get the entries of each object
.map(([label, value]) => ({ label, value })) // create a new object from each entry
)
console.log(result)