Coffeescript 使用键数组检查嵌套对象
我有一个数组(目标),其中包含一系列嵌套对象的键。我需要先确定那里有一个对象,然后再为它设置一个值。这段代码正在运行,但只有在我愿意重复的范围内 我如何在数组中n个键的情况下执行此操作,而不重复此切换到无穷大Coffeescript 使用键数组检查嵌套对象,coffeescript,Coffeescript,我有一个数组(目标),其中包含一系列嵌套对象的键。我需要先确定那里有一个对象,然后再为它设置一个值。这段代码正在运行,但只有在我愿意重复的范围内 我如何在数组中n个键的情况下执行此操作,而不重复此切换到无穷大 for t, index in target switch i when 1 if object[target[0]] is undefined object[target[0]] = {} w
for t, index in target
switch i
when 1
if object[target[0]] is undefined
object[target[0]] = {}
when 2
if object[target[0]][target[1]] is undefined
object[target[0]][target[1]] = {}
when 3
if object[target[0]][target[1]][target[2]] is undefined
object[target[0]][target[1]][target[2]] = {}
when 4
if object[target[0]][target[1]][target[2]][target[3]] is undefined
object[target[0]][target[1]][target[2]][target[3]] = {}
when 5
if object[target[0]][target[1]][target[2]][target[3]][target[4]] is undefined
object[target[0]][target[1]][target[2]][target[3]][target[4]] = {}
when 6
if object[target[0]][target[1]][target[2]][target[3]][target[4]][target[5]] is undefined
object[target[0]][target[1]][target[2]][target[3]][target[4]][target[5]] = {}
从我的头顶警告未经测试的代码。但这应该行得通
current = object
for t in target
current = (current[t] ?= {})
或者更具javascripty的版本:
target.reduce ((o,t)-> o[t]?={}), object
第一个更清晰,第二个更优雅(并且不会污染
current
的范围)。使用递归查看树迭代。请注意,Array::reduce
并非在所有浏览器中都可用。以下是一个可以用作备用方案的实现: