Javascript 有没有办法更新一个JS对象,但保留以前的字段不变?

Javascript 有没有办法更新一个JS对象,但保留以前的字段不变?,javascript,Javascript,我在Mongo中寻找类似于$set操作符的东西,但在JS文档中找不到: 我想将字段的值替换为另一个指定的值。如果该字段不存在,我想添加具有指定值的字段。但是如果对象中已经存在字段,我不想覆盖它们 说我有这个: var hashTable = { key1: "Original Stuff", key2: "More Stuff" } 我想将key2更新为其他内容,但只更新key2。我想让key1一个人呆着。另外,我想添加一个key3。如果有这样的东西就好了: var hashTable =

我在Mongo中寻找类似于
$set
操作符的东西,但在JS文档中找不到:

我想将字段的值替换为另一个指定的值。如果该字段不存在,我想添加具有指定值的字段。但是如果对象中已经存在字段,我不想覆盖它们

说我有这个:

var hashTable = { key1: "Original Stuff", key2: "More Stuff" }
我想将
key2
更新为其他内容,但只更新
key2
。我想让
key1
一个人呆着。另外,我想添加一个
key3
。如果有这样的东西就好了:

var hashTable = hashTable.set( {key2: "Edited Stuff", key3: "Added stuff"} )
哈希表将是

{key1:“原始资料”,key2:“编辑资料”,key3:“添加资料”}

编辑


假设原始对象和我想用作更新参数的对象都有大量字段。我不打算做hashTable.key2=“Edited Stuff”

简单地做你想做的事:

var hashTable = { key1: "Original Stuff", key2: "More Stuff" }
hashTable.key2 = "Edited Stuff";
hashTable.key3 = "Added stuff";

因此,您正在寻找,它允许您迭代对象的键

因此,在这种情况下,您可以轻松编写函数:

var setDict = function(target,extra){
    for(var property in extra){
         target[property]=extra[property];
    }
    return target;
}
Underline.js还为此()提供了一个函数

用法:

var hashTable = { key1: "Original Stuff", key2: "More Stuff" }
hashTable = _.extend(hashTable,{key2: "Edited Stuff", key3: "Added stuff"} )
// hashTable == {key1: "Original Stuff", key2: "Edited Stuff", key3: "Added stuff"}
扩展鲁迪的回答(我输入了类似的东西!)


如果需要动态获取键,您也可以始终使用对象['property']符号。

因此,如果该值预设在新值中,您希望更新该值,对吗?对。该对象可能有大约100个字段。我不可能为每个字段编写显式代码来检查这100个字段中的每个字段。令人惊叹的。。。我没想到去登记。我现在就去试试。呜呼
\u0。extend
正是我想要的!下划线在Javascript中有很多用于一般用途操作的有用方法,翻阅它以查看是否有适合您需要的方法总是很有用的