gpt4 book ai didi

Javascript - 添加两个 HashMap

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:41:40 27 4
gpt4 key购买 nike

我有两个 HashMap 如下

m1={};
m1['a']={};
m1['b']={};
m1['a']['x']=5;
m1['b']['x']=6;
m1['a']['y']=4;
m1['b']['y']=6;

m2={};
m2['a']={};
m2['b']={};
m2['a']['x']=8;
m2['b']['x']=7;
m2['a']['y']=6;
m2['b']['y']=4;

output expected
m3['a']['x']->13;
m3['a']['y']->10;
m3['b']['x']->13;
m3['b']['y']->10;

一个简单的解决方案是遍历每个 map 并向新 map 添加值,但是有没有更有效的方法?

最佳答案

您可以使用Object.entries 将对象转换为数组。使用 reduce

汇总数组

let m1 = {};
m1['a'] = {};
m1['b'] = {};
m1['a']['x'] = 5;
m1['b']['x'] = 6;
m1['a']['y'] = 4;
m1['b']['y'] = 6;


let m2 = {};
m2['a'] = {};
m2['b'] = {};
m2['a']['x'] = 8;
m2['b']['x'] = 7;
m2['a']['y'] = 6;
m2['b']['y'] = 4;
m2['a']['z'] = "name";

let m3 = Object.entries(m1).reduce((c, [i, v]) => {
let addOnly = ['x', 'y'];
c[i] = c[i] || {};

//Loop thru m1
Object.entries(v).reduce((x, [k, o]) => Object.assign(x, {[k]: o}), c[i]);

//Loop thru m2
Object.entries(m2[i]).reduce((x, [k, o]) => {

if (addOnly.includes(k)) {
x[k] = x[k] || 0;
x[k] += o;
} else {
x[k] = x[k] || o;
}

return x;
}, c[i]);

return c;
}, {})

console.log(m3);

关于Javascript - 添加两个 HashMap ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50089083/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com