Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更新动态对象_Javascript - Fatal编程技术网

Javascript 更新动态对象

Javascript 更新动态对象,javascript,Javascript,我有一个目标: { ..., values: {}, ... } 默认情况下,值为空 现在我想将动态对象添加到此对象: [myDynamicProperty]: { title: '...', introduction: '...' } 没关系,我知道怎么做。但是,在其他操作中,我必须将key:value或key:object添加到[myDynamicProperty]中,当我尝试某个操作时,我会丢失[myDynamicProperty] 我试图

我有一个目标:

{ 
    ...,
    values: {},
    ...
}
默认情况下,
为空

现在我想将动态对象添加到此对象:

[myDynamicProperty]: {
     title: '...',
     introduction: '...'
}
没关系,我知道怎么做。但是,在其他操作中,我必须将
key:value
key:object
添加到
[myDynamicProperty]
中,当我尝试某个操作时,我会丢失
[myDynamicProperty]

我试图克隆我的初始对象,但它不起作用


当然,stackoverflow上的某个人有解决方案。

您可以采取两步方法,将默认对象分配给
myDynamicProperty
,然后将值分配给它

这将保留
object.values[myDynamicProperty]
的所有属性,并仅更改给定的键

var object = {
        values: {},
    }

object.values[myDynamicProperty] = object.values[myDynamicProperty] || {};
Object.assign(object.values[myDynamicProperty], { title: '...', introduction: '...' });

如果您试图传达您是从以下对象开始的:

var user = {
  meta: {
    first_name: "John",
    last_name: "Smith"
  }
}
并希望将
middle\u name
添加到
meta
对象属性中,然后您应该执行以下操作

Object.assign(用户['meta'],{middle_name:“Harry”})


请注意,第一个对象将被后面对象的值覆盖。以后的对象特性将优先于以前的对象特性。有关更多详细信息,请参阅警告:这是一项ES6功能,如有必要,请使用polyfill进行向后兼容性。

如果您分享有关具体案例的更多详细信息,也许我们可以提供帮助:-)您能否显示使您丢失值的代码?不清楚您遇到了什么问题;向对象添加属性不会删除现有对象。确实没有设置整个属性吗?
obj.values[myDynamicProperty].key=value我感觉你做了一些类似values.myDynamicProperty={foo:'bar}的事情,当它应该是values.myDynamicProperty.foo='bar'时,实际上我在代码中使用了
let newValues=Object.assign(Object.values[myDynamicProperty],…)