javascript对象内部数组的递归删除
我的目标如下:javascript对象内部数组的递归删除,javascript,Javascript,我的目标如下: { name: ["Jimmy","Jill"], age: [23, 42], location: { city: ["LA", "NYC"] } 对于每个对象键,都有一个包含2个条目的数组值(始终)。我要做的是通过提取数组中的第二项来重新创建对象。但我希望这是递归的。因此,输出将是: { name: "Jill", age: 42, location: { city: "NYC" } 我尝试使用object.keys()遍历对象,但这似乎没有给我嵌套的键。我想知道是否有更
{ name: ["Jimmy","Jill"], age: [23, 42], location: { city: ["LA", "NYC"] }
对于每个对象键,都有一个包含2个条目的数组值(始终)。我要做的是通过提取数组中的第二项来重新创建对象。但我希望这是递归的。因此,输出将是:
{ name: "Jill", age: 42, location: { city: "NYC" }
我尝试使用object.keys()
遍历对象,但这似乎没有给我嵌套的键。我想知道是否有更优雅的方法来解决这个问题
非常感谢 这样可以吗?只有当我们假设每个道具都是普通对象的数组时,这才有效
let o={name:[“吉米”,“吉尔],年龄:[23,42],地点:{city:[“洛杉矶”,“纽约”]}
功能记录(obj){
用于(输入obj){
if(obj[key]数组实例){
obj[key]=obj[key][1]
}否则{
obj[key]=rec(obj[key])
}
}
返回obj
}
记录(o)
控制台。dir(o)< /代码> p>晚会的尾部,但这里有一个“功能性”选项要考虑。需要修改以适应任何边缘情况
const reducer = input =>
Object.entries(input).reduce(
(acc, [key, value]) =>
value instanceof Array ? { ...acc, ...{ [key]: value[1] } } : { ...acc, ...reducer(value) },
{}
);
const input = { name: ["Jimmy", "Jill"], age: [23, 42], location: { city: ["LA", "NYC"] } };
const reduced = reducer(input);
console.log(reduced); // Output: { name: 'Jill', age: 42, city: 'NYC' }
在分析过程中可能更容易筛选:
j='{“姓名”:[“吉米”,“吉尔”],“年龄”:[23,42],“地点”:{“城市”:[“洛杉矶”,“纽约”]}
解析(j,(k,v)=>v.constructor==Array?v.pop():v)
console.log(o)
location
为什么不是这样的数组[{city:'LA'},{city:'NY'}]
?嵌套深度超过1级的字段如何工作?这很漂亮。非常感谢。另外,对于其他看到这一点的人,我正在数组中寻找第二项,因此rec(obj[1])
起了作用。@GivP是的,我完全忽略了这一点。修正了。可爱而优雅!