Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 合并具有相同键的2个对象,值来自2个数组_Javascript_Arrays_Node.js_Object_Lodash - Fatal编程技术网

Javascript 合并具有相同键的2个对象,值来自2个数组

Javascript 合并具有相同键的2个对象,值来自2个数组,javascript,arrays,node.js,object,lodash,Javascript,Arrays,Node.js,Object,Lodash,我想合并具有相同键的2个对象,2个数组中的值,如下所示: var arr1 = [ { a: "a", 1: 1, 2: 2 }, { a: "b", 1: 1, 2: 3 } ]; var arr2 = [ { a: "a", 3: 123 }, { a: "b", 3: 4411 } ]; var arr3 = _.map(arr1, function(a1) { var a3 = {}; _.map(arr2, function(a2)

我想合并具有相同键的2个对象,2个数组中的值,如下所示:

var arr1 = [
    { a: "a", 1: 1, 2: 2 },
    { a: "b", 1: 1, 2: 3 }
];

var arr2 = [
    { a: "a", 3: 123 },
    { a: "b", 3: 4411 }
];

var arr3 = _.map(arr1, function(a1) {
    var a3 = {};

    _.map(arr2, function(a2) {
        if (a1.a == a2.a) {
            a3 = _.extend(a1, a2);
        }
    })

    return a3
});
结果:

arr3 = [ 
  { '1': 1, '2': 2, '3': 123, a: 'a' },
  { '1': 1, '2': 3, '3': 4411, a: 'b' } 
]
它看起来愚蠢吗?还有其他的方法吗? 谢谢阅读。

你可以

var arr1=[
{a:“a”,1:1,2:2},
{a:“b”,1:1,2:3}
];
var arr2=[
{a:“a”,3:123},
{a:“b”,3:4411}
];
让结果=arr1.map((e)=>{
for(arr2的let元素){
if(e.a==element.a)Object.assign(e,element);
}
返回e;
});
控制台日志(结果)使用lodash链连接到阵列、类似对象,然后将每组连接到单个对象:

vararr1=[{a:a,1:1,2:2},{a:b,1:1,2:3}];
var arr2=[{a:“a”,3:123},{a:“b”,3:4411}];
var结果=U1(arr1)
.concat(arr2)//concat第二个数组
.groupBy('a')//按相同的键分组
.map(0.spread(0.curry(0.merge,{}))//左currey merge to创建一个新的空对象,并将组作为参数展开
.value();
控制台日志(结果)

您的解决方案是否有效?问题是什么?它有效,但我认为有其他更好的方法可以使用某些库来实现这一点。(我还没有测试大数组长度)发帖时请更具体一些。例如,提及您使用的JavaScript库。它将帮助人们调查您使用的类似类型的库。什么是相同的密钥?相同的索引或相同的键
a
?Lodash way可能存在重复。但是ES6版本不起作用。@Ajinkya-您试过运行这些代码段吗?如果是,你用的是什么浏览器?我的错。我没有替换es6代码段的属性“a”。两个代码段都正常工作。考虑到性能,你建议使用哪一种?@Ajinkya-我真的不知道该告诉你真相。如果物品的数量很小,这其实并不重要。如果数量巨大,您应该使用lodash,因为散布不安全。你需要对它进行分析。