如何组合具有相同键的两个对象并保留该键的两个值

How to combine two objects that have the same key and keep both values of that key

本文关键字:两个 保留 对象 何组合 组合      更新时间:2023-09-26

我有两个对象:

{ query="twitter.com",  tags="dog" }

{ tags="funny" }

我理想的合并输出是:

{ query="twitter.com",  tags="dog,funny" }

我看过下划线/jQuery扩展方法,他们似乎只是用'funny'代替'dog',而不是将两者结合起来。

有人有什么建议吗?

谢谢!

可以使用map

下面是代码片段:
_.map(arr, function(val, key){
    if(arr1[key] != undefined) arr[key] = val  + "," + arr1[key];
});

给你:

这将适用于您需要组合的任意多个对象:' combine(data1, data2, .... .dataN)

var data1 = {query:"twitter.com", tags: "dog"};
var data2 = {tags: "funny" }
var combine = function() {
   var obj = {};
   for(var i in arguments){
     var curr = arguments[i];
     for(var key in curr){
       if(!obj[key]) obj[key] = [];
       obj[key].push(curr[key]);
     }
   }
  
  var __obj={};
  for(var key in obj)
    __obj[key] = obj[key].join(",");
  
  return __obj;
}  
document.write(JSON.stringify(combine(data1, data2)));

通过使用.each函数我们可以做一些你想做的事情试试下面的代码

var arr= { query:"twitter.com",  tags:"dog" };
var arr1 = { tags:"funny" };
$.each(arr, function(key, val){
    if(arr1[key] != undefined)
    {
        arr1[key] = arr1[key]  + "," + val;
    }
    else
    {
        arr1[key] = val;
    }
});
console.log(arr1);

JSFIDDLE上的运行代码

试试这个:

var obj1 = { query:"twitter.com",  tags:"dog" } ,obj2 = { tags:"funny" };
$.each(obj1, function(key,val){
    if(typeof obj2[key] != 'undefined') 
        obj1[key] = val + ',' + obj2[key];
});
alert(JSON.stringify(obj1))