use*_*898 8 javascript dictionary
我想在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];
}
Run Code Online (Sandbox Code Playgroud)
编辑:更新字典工作正常如下 -
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];
}
}
Run Code Online (Sandbox Code Playgroud)
但如果我尝试将功能分开 -
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]);
}
Run Code Online (Sandbox Code Playgroud)
它抛出一个错误,说Uncaught SyntaxError:Unexpected token new.我真的尝试了很多排列,请建议.非常感谢!
Jef*_*rey 21
您可以使用解构分配.
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"
}
*/
Run Code Online (Sandbox Code Playgroud)
小智 7
您可以用来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}Run Code Online (Sandbox Code Playgroud)
您甚至可以传入一系列对象来更新target对象,请查看MDN链接以获取更多信息
Map实例,只需调用yourMap.set(key, newValue).yourObject.yourProperty = newValueyourObject['your-property'] = newValue没有像 Python 那样的“批量”更新。这将取决于您如何构建数据以及您需要深入研究的程度。
| 归档时间: |
|
| 查看次数: |
7334 次 |
| 最近记录: |