python dict.update() 在 javascript 中等效

新手上路,请多包涵

我想更新 javascript 中的字典 - 修改现有值或添加新值 - 与 python 字典更新相同。

dict+ 或 dict.update() 似乎不起作用。是否可以在 javascript 中这样做?

提前致谢!

 data={"abc":{1:2,3:4}}

if (key in d) {
            d[key].update(data[key]);
        }
        else {
            d[key]={};
            d[key]=data[key];
        }

编辑:更新字典工作正常,如下所示-

 dg={"abc":{1:2,3:4},"sdc":{1:2,4:5}}
function upd(data) {
    for (key in data) {
        if (key in dg) {
            for (key2 in data[key]) {
                dg[key][key2]=data[key][key2];
            }
        }
        else {
            dg[key]={};
            for (key2 in data[key]) {
                dg[key][key2]=data[key][key2];
            }
        }

但如果我尝试将函数分离为-

 var old={};
var new={};
function update_dict(old,new) {
console.log(new,old);
    for (key2 in new) {
                old[key2]=new[key2];
            }
    return old;
}
function upd(data) {
for (key in data) {
    if (key in dg) {
        dg[key]=update_dict(dg[key],data[key]);
    }
    else {
        dg[key]={};
        dg[key]=update_dict(dg[key],data[key]);
    }

它抛出一个错误 Uncaught SyntaxError: Unexpected token new 。我真的尝试了很多排列,请建议。非常感谢!

原文由 user2715898 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

您可以使用 解构赋值

 const first_dict = { 'key_one': 'value_one', 'key_two': 'value_two' }
const second_dict = { 'key_one': 'value_from_second_dict', 'key_three': 'value_three' }

const accumulative = {
  ...first_dict,
  ...second_dict
}

console.log(accumulative)

/*
[object Object] {
  key_one: "value_from_second_dict",
  key_three: "value_three",
  key_two: "value_two"
}
*/

原文由 Jeffrey 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以使用 Object.assign() 来完成工作。它将创建一个新对象,所有键都已更新,并将任何新键值对添加到新创建的对象中。

 const target = {c: 4, d: 5}
const source = {a: 1, b: 2, c: 3};

const newObj = Object.assign({}, target, source);

console.log(newObj); //=> {a: 1, b: 2, c: 3, d: 5}

请注意 Object.assign() 修改了第一个参数,这就是我们在上面传递空对象的原因。

您甚至可以传入一系列对象来更新 target 对象,查看 MDN 链接 以获取更多信息

原文由 CasualCoder3 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题