JavaScript:如果键不存在则写入字典

use*_*301 3 javascript dictionary

我想用 JavaScript 填充字典的字典。

一旦我有了居民的地址和姓名,我想将其写入对象,即

addressCache[city][street][number] = name

但是,如果我的字典尚不包含 s 键的值city,则它会访问streetof undefined,因为字典尚不存在。

我目前的解决方法是

adressCache = {}
function setAddressEntry(city, street, number, familyName) {
  if(!adressCache[city]) {
    adressCache[city] = {}
  }
  if(!adressCache[city][street]) {
    adressCache[city][street] = {}
  }

  adressCache[city][street][number] = familyName
  
}
Run Code Online (Sandbox Code Playgroud)

我认为这不是正确的做法。我该如何改进这段代码?或者为此编写一个辅助函数是否很常见?

Pra*_*mar 5

使用逻辑空值赋值 (??=)会更容易、更干净

let adressCache = {};
function setAddressEntry(city, street, number, familyName) {
  adressCache.city ??= {};
  adressCache.city.street ??= {};

  adressCache.city.street.number = familyName;
}

setAddressEntry("gurugram", "1st street", 24, "SULTAN");
console.log(adressCache);
Run Code Online (Sandbox Code Playgroud)