【问题标题】:Set nested dynamic keys over dynamic keys在动态键上设置嵌套动态键
【发布时间】:2022-06-15 21:04:42
【问题描述】:

假设我有以下内容:

  let key1 = 'firstkey'
  let key2 = 'secondkey'
  let obj = {}

现在我可以使用动态键在obj 上设置一个键:

  obj[key1]= 'randomvalue' // Equals to obj: { firstkey: 'randomvalue' } 

有一种快速的写法:

  obj[key1][key2] = 'randomvalue' // Should equal to obj: { firstkey: { secondkey: 'randomvalue'} } 

无需事先检查嵌套属性key1 是否确实存在?

【问题讨论】:

    标签: javascript


    【解决方案1】:

    选项 1,使用扩展运算符

    let key1 = "firstkey";
    let key2 = "secondkey";
    let obj = {};
    
    obj[key1] = { ...obj[key1], [key2]: "randomvalue" };
    

    选项2,使用Lodash.set

    _.set(obj, [key1, key2], "randomvalue");
    

    【讨论】:

      【解决方案2】:

      可能不是最好的解决方案,但是:

      const s = {}
      const d = "d"
      const p = "p"
      
      s[`${d}`] = {}
      s[`${d}`][`${p}`] = "123"
      
      // or 
      
      s[`${d}`] = {[`${p}`]: "123"}

      【讨论】:

      • 您可以将其改写为 s[d][p]
      猜你喜欢
      • 1970-01-01
      • 2020-01-31
      • 1970-01-01
      • 1970-01-01
      • 2017-05-29
      • 1970-01-01
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      相关资源
      最近更新 更多