如何在现有的Javascript对象中添加带有值的动态键?

时间:2019-02-10 05:24:41

标签: javascript lodash javascript-objects

我有一个现有的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 个答案:

答案 0 :(得分:0)

您可以使用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;