我有一个数组(目标),其中包含一系列嵌套对象的键。我需要确保在我之前设置一个值之前有一个对象。这段代码正在运行,但只是因为我可能不愿重复它。
如何在不重复此切换到无穷大的情况下为数组中的 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]] = {}
答案 0 :(得分:1)
警告未经测试的代码。但这应该有用......
current = object
for t in target
current = (current[t] ?= {})
或更多javascripty版本:
target.reduce ((o,t)-> o[t]?={}), object
第一个更易读,第二个更优雅imho(并且不会用current
污染范围。)