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是的,我完全忽略了这一点。修正了。可爱而优雅!