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

时间:2015-09-18 09:41:53

标签: javascript jquery underscore.js

我有两个对象:

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

{ tags="funny" }

我理想的合并输出是:

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

我看过Underscore / jQuery扩展方法,它们似乎只是取代了“狗”和“狗”。有趣的'而不是将两者结合起来。

有没有人有任何建议?

谢谢!

4 个答案:

答案 0 :(得分:1)

您可以使用map

以下是摘录:

_.map(arr, function(val, key){
    if(arr1[key] != undefined) arr[key] = val  + "," + arr1[key];
});

答案 1 :(得分:0)

你去:

这将适用于您需要组合的多个对象:`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)));

答案 2 :(得分:0)

通过使用.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

上运行代码

答案 3 :(得分:0)

试试这个:

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))