代码之家  ›  专栏  ›  技术社区  ›  Shams Nahid

如何在现有的javascript对象中添加具有值的动态键?[复制品]

  •  -4
  • Shams Nahid  · 技术社区  · 7 年前

    这个问题已经有了答案:

    我有一个现有的javascript对象。

    let existingObject = {
        1: {
            'prop1': 'prop1 value',
            'prop2': 'prop2 value'
        },
        2: {
            'prop1': 'prop1 value',
            'prop2': 'prop2 value'
        },
        3: {
            'prop1': 'prop1 value',
            'prop2': 'prop2 value'
        }
    }
    

    我要向该现有对象添加属性。我的新键值是:

    const key = 4;
    const value = {
        'prop1': 'prop1 value',
        'prop2': 'prop2 value'
    }
    

    在附加键和值之后,我的新对象应该是,

    const newObject = {
        1: {
            'prop1': 'prop1 value',
            'prop2': 'prop2 value'
        },
        2: {
            'prop1': 'prop1 value',
            'prop2': 'prop2 value'
        },
        3: {
            'prop1': 'prop1 value',
            'prop2': 'prop2 value'
        },
        4: {
            'prop1': 'prop1 value',
            'prop2': 'prop2 value'
        }
    }
    

    这里的关键是一个动态值。每当我试图附加这个键值时,这个键值就会变成变量名。

    我如何解决这个问题?

    注意:为了创建现有的对象,我使用了lodash。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Shidersz    7 年前

    你可以用 Object.assign() 并使用 Computed Property names (例) {[key]: value} ):

    let existingObject = {
        1: {'prop1': 'prop1 value', 'prop2': 'prop2 value'},
        2: {'prop1': 'prop1 value', 'prop2': 'prop2 value'},
        3: {'prop1': 'prop1 value', 'prop2': 'prop2 value'}
    }
    
    const key = 4;
    const value = {'prop1': 'prop1 value', 'prop2': 'prop2 value'}
    
    Object.assign(existingObject, {[key]: value});
    console.log(existingObject);

    但是,正如其他人对你的评论,这很简单,就像:

    existingObject[key] = value;