当您尝试在不存在的键中创建嵌套键时,如下所示:
$$i
您收到一个错误:“无法读取未定义的属性'key2'” 我正在尝试编写一个函数,该函数将查找前面的键是否不存在并将创建它,以便不会引发此错误。尽管我不知道如何“可变化”关键参考,但我遇到了一个问题。
var x = {}
x['key1']['key2'] = 1
我需要先执行循环function deepmake(obj, prop, keyarr) {
let holder = `obj['${keyarr[0]}']`;
for (let i = 1; i < keyarr.length; i++) {
let fun = Function(`
let holder = ${holder}
let obj = ${obj}
let prop = ${prop}
let keyarr = ${keyarr}
if(${holder}.hasOwnProperty(${keyarr[i]})){ //problem here, string literal is not valid
holder+=\`['${keyarr[i]}']\`
} else if(i===keyarr.length-1){
${holder}[keyarr[i]] = prop
return obj
} else {
holder+=\`['${keyarr[i]}']\`
${holder} = {} // undefined key is created here, string also not valid
}`);
fun();
holder += `['${keyarr[i]}']`
}
}
,然后执行obj[key[0]]
,依此类推。如果基于密钥的数量,我不能有条件地陈述,因为可能有100多个。