我正在寻找与Mongo中的$set
运算符类似的内容,并且无法在JS文档中找到它:
http://docs.mongodb.org/manual/reference/operator/update/set/
我想将字段的值替换为另一个指定的值。如果该字段不存在,我想添加具有指定值的字段。但是,如果对象中已有字段,我不想覆盖它们。
说我得到了这个:
var hashTable = { key1: "Original Stuff", key2: "More Stuff" }
我想将key2
更新为其他内容,但仅限key2
。我想单独留下key1
。另外,我想添加一个key3
。如果有类似的东西会很好:
var hashTable = hashTable.set( {key2: "Edited Stuff", key3: "Added stuff"} )
然后hashTable将是
{ key1: "Original Stuff", key2: "Edited Stuff", key3: "Added Stuff" }
修改
想象一下,原始对象和我想用作更新参数的对象都有吨和吨的字段。我不会做hashTable.key2 = "Edited Stuff"
答案 0 :(得分:1)
所以你正在寻找for..in
statement,它允许你迭代对象的键。
所以在这种情况下,你可以轻松编写你的函数:
var setDict = function(target,extra){
for(var property in extra){
target[property]=extra[property];
}
return target;
}
Underscore.js还为此提供了一个函数(_.extend
)。
用法:
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"}
答案 1 :(得分:0)
只需按照自己的意愿行事:
var hashTable = { key1: "Original Stuff", key2: "More Stuff" }
hashTable.key2 = "Edited Stuff";
hashTable.key3 = "Added stuff";
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects
答案 2 :(得分:0)
扩展Rudy的答案(我输入了类似的东西!)。
如果您需要动态获取密钥,您也可以使用对象['property']表示法。