2

我有一个数组(目标),其中包含一系列嵌套对象的键。在稍后为它设置值之前,我需要确保那里有一个对象。这段代码是有效的,但只是在我不厌其烦地重复它的情况下。

如何在不重复此切换到无穷大的情况下对数组中的n个键执行此操作?

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]] = {}
4

1 回答 1

1

从我的头顶警告未经测试的代码。但这应该工作......

current = object
for t in target
  current = (current[t] ?= {})

或者更javascripty的版本:

target.reduce ((o,t)-> o[t]?={}), object

第一个更清晰,第二个更优雅恕我直言(并且不会污染范围current)。

于 2011-03-27T22:01:31.953 回答