gpt4 book ai didi

javascript - 递归删除javascript对象中的数组

转载 作者:行者123 更新时间:2023-11-30 14:43:41 27 4
gpt4 key购买 nike

我有以下对象:

{ name: ["Jimmy","Jill"], age: [23, 42], location: { city: ["LA", "NYC"] }

对于每个对象键,都有一个包含 2 个条目的数组值(总是)。我想要做的是通过提取数组中的第二项来重新创建对象。但我希望这递归地发生。所以输出将是:

{ name: "Jill", age: 42, location: { city: "NYC" }

我已经尝试使用 Object.keys() 遍历对象,但这似乎没有给我嵌套键。我想知道是否有更优雅的方法来解决这个问题?

非常感谢。

最佳答案

这样可以吗?只有当我们假设每个 Prop 都是普通对象的数组时,这才有效。

let o = { name: ["Jimmy","Jill"], age: [23, 42], location: { city: ["LA", "NY"] }}

function rec(obj) {
for (let key in obj) {
if (obj[key] instanceof Array) {
obj[key] = obj[key][1]
} else {
obj[key] = rec(obj[key])
}
}
return obj
}

rec(o)
console.dir(o)

甚至这个? (允许存在包含对象和普通原始条目的数组)

let o = {
primitive: 10,
name: ["Jimmy","Jill"],
age: [23, 42],
location: {
city: ["LA", "NY"],
test: [
{prop1: ['1', '2']},
{prop2: ['A', 'B']}
]
}
}

function rec(obj) {
if (obj instanceof Array) {
return rec(obj[1])
} else if (obj instanceof Object) {
for (let key in obj) {
obj[key] = rec(obj[key])
}
return obj
} else {
return obj
}
}

rec(o)
console.dir(o)

关于javascript - 递归删除javascript对象中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49289567/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com