【发布时间】:2021-01-02 02:43:02
【问题描述】:
这基本上是适用于任何编程语言的逻辑问题,我只是碰巧使用 JavaScript 来解决这个问题
基本上想象我有某种对象,例如
{Props:"stuff",
other: {
stuff: "etc",
other: {
Extra: "filler",
other: {}
}
}
}
本质上,它是一个具有一些未知数量的额外属性的对象,但每个子对象都有一个同名的嵌套属性“在这种情况下为“其他”),并且深度可能是无限的,这意味着可能存在根对象内的 n 个对象,每个子对象都是另一个对象中的容器,其键是相同的(在本例中也是“其他”)
听起来可能比实际复杂,但本质上 other 属性嵌套在根对象中并重复
问题是我想做一个函数,在给定的深度(n)处打破这个嵌套链,从而将所有进一步的嵌套对象设置为一个值
这听起来可能很复杂,但基本上,在上面的示例中,对象的“其他”属性的嵌套深度为 3,假设我想在深度索引 2 处打破深度,从而将对象更改为仅有一个嵌套的“其他”属性,设置为某个值(如数字或字符串,例如“5”),而不是设置为另一个也包含其他属性(以及潜在的附加属性等)的对象
那么我怎样才能创建一个函数来接收一个包含未知数量的嵌套属性 Ruth key k 的基础对象,并使其返回一个新对象(或修改原始对象,但我更愿意只返回一个新的)几乎与基础对象相同,除了在深度索引n 处,带有键k 的嵌套属性将设置为值v,而不是继续在它的未知额外数量的链中嵌套深度
我什至无法理解如何做到这一点,我总是回到将索引k 的属性设置为等于根函数,但将属性本身作为参数传递给原始根对象(基本上是递归)除非输入对象不包含属性k,在这种情况下只返回属性本身,但这只是返回最内层嵌套属性的递归方法,但在不知所措中适合做什么为了实现上述结果,这又是一个与基础对象 Ruth 几乎相同的新对象,除了它的嵌套属性,其中键 k 在深度 n 被设置为值 v,我只是在完全不知道从哪里开始
【问题讨论】:
标签: javascript object recursion nested logic