我有一个包含其他对象的对象,以及一些我不想要的数字。
我希望将对象转换为对象数组并删除数字。
举个例子:
输入
const object = {
john: {
instrument: 'violin',
age: 26
},
bob: {
instrument: 'guitar',
age: 32
},
numberIDontWant: 2,
flynn: {
instrument: 'piano',
age: 3
},
numberIDontWant2: 9
}输出
[
{
name: 'john',
instrument: 'violin',
age: 26
},
{
name: 'bob',
instrument: 'guitar',
age: 32
},
{
name: 'flynn',
instrument: 'piano',
age: 20
}
]有人能帮我吗?
发布于 2022-05-18 16:50:40
你可以用Object.entries和.map
console.log(Object.entries({
john: {
instrument: 'violin',
age: 26
},
bob: {
instrument: 'guitar',
age: 32
},
numberIDontWant: 2,
flynn: {
instrument: 'piano',
age: 3
},
numberIDontWant2: 9
}).map(([k,v]) => typeof v === 'object' ? ({...v, name: k}) : undefined).filter(i => i))
发布于 2022-05-18 16:51:02
您很可能希望在Object.entries()上迭代,这样您就可以访问键( name)和值。并不是100%清楚什么是包含/排除哪些值的标准,但一种方法是只包含typeof等于'object'的值。
function objectToArray(obj) {
let arr = [];
for (let [name, value] of Object.entries(obj)) {
if (typeof value === "object") {
arr.push({
...value,
name,
});
}
}
return arr;
}
console.log(
objectToArray({
john: {
instrument: "violin",
age: 26,
},
bob: {
instrument: "guitar",
age: 32,
},
numberIDontWant: 2,
flynn: {
instrument: "piano",
age: 3,
},
numberIDontWant2: 9,
})
);
发布于 2022-05-18 16:54:19
你可以用map和filter
const data = {
john: {
instrument: 'violin',
age: 26
},
bob: {
instrument: 'guitar',
age: 32
},
numberIDontWant: 2,
flynn: {
instrument: 'piano',
age: 3
},
numberIDontWant2: 9
}
const result = Object.entries(data).map(([k, v]) => {
if (typeof v === "object") return { ...v, name: k }
}).filter(x => x);
console.log(result);
https://stackoverflow.com/questions/72293062
复制相似问题