如何组合具有相同键的两个对象并保留该键的两个值
How to combine two objects that have the same key and keep both values of that key
我有两个对象:
{ 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))
相关文章:
- JQuery合并了keyup和focusout两个函数
- 如何使用 node.js 比较两个 json 数组
- 为复选框javascript指定两个值
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 单击时切换两个图像
- 我可以'我似乎不知道如何修复javascript中的两个lint.有人能帮我理解吗
- 基于两个条件退出While循环
- 如何在这里将两个值最低的数字相加
- 在同一命名空间中保留两个独立的javascript文件/代码段
- 交换两个 html 元素并保留其上的事件侦听器
- 将两个或多个 JSON 对象数组合并为一个数组,保留唯一性
- 合并两个对象,但保留继承
- 如何检查数字是否有两个小数位,并在必要时保留尾随零
- Javascript在onclick上验证两个控件,但如果只有一个控件验证,则不保留值
- RegExp匹配除两个保留字符串外的任何字符串
- 如何组合具有相同键的两个对象并保留该键的两个值
- 如何得到只有两个字母作为字母,并保留为数字在文本区域字段
- 在两个项目之间共享组件,同时保留热加载
- 如何决定是将其拆分为两个类还是保留在同一个类中
- 保留两个<选择>s同步