Javascript 如何将多个对象中的值合并到一个数组对象中?
我有两个JSON,如下所示:Javascript 如何将多个对象中的值合并到一个数组对象中?,javascript,arrays,Javascript,Arrays,我有两个JSON,如下所示: var obj1 = { " name ":"rencho", " age ":23, " occupation ":"SE" } var obj2 = { " name ":"manu", " age ":23, " country ":"india" } 我想要预期的输出: var result = { "name":["rencho", "manu"], "age":[23, 23],
var obj1 = {
" name ":"rencho",
" age ":23,
" occupation ":"SE"
}
var obj2 = {
" name ":"manu",
" age ":23,
" country ":"india"
}
我想要预期的输出:
var result = {
"name":["rencho", "manu"],
"age":[23, 23],
"country":["-", "india"],
"occupation": ["SE", "-"],
}
但是,我尝试使用下面的代码片段:
let arrGlobal = []
arrGlobal.push(obj1);
arrGlobal.push(obj2);
let mergedResult = arrGlobal.reduce(function(r, e) {
return Object.keys(e).forEach(function(k) {
if(!r[k]) r[k] = [].concat(e[k])
else r[k] = r[k].concat(e[k])
}), r
}, {})
console.log(mergedResult);
但它不会在json对象中打印-
。我将感谢你方的任何帮助
将不胜感激首先获取所有键的列表(需要提前检查迭代时是否需要添加
-
),然后使用reduce
迭代每个对象并将其值添加到累加器:
var obj1={
“名称”:“rencho”,
“年龄”:23岁,
“职业”:“SE”
}
变量obj2={
“名称”:“manu”,
“年龄”:23岁,
“国家”:“印度”
}
常数arr=[obj1,obj2];
const allKeys=arr.reduce((键,对象)=>{
Object.keys(obj.forEach)(key=>keys.add(key))
返回键;
},新集合());
const merged=arr.reduce((合并,对象)=>{
allKeys.forEach((键)=>{
如果(!merged[key])merged[key]=[];
合并[key].push(对象[key]| |'-');
});
返回合并;
}, {});
console.log(合并)代码>一种稍微不同的方法,它使用单个循环作为外部对象数组,并动态生成所有需要的关键点
var obj1={姓名:“rencho”,年龄:23岁,职业:“SE”},
obj2={姓名:“马努”,年龄:23岁,国家:“印度”},
哈希=新集合,
结果={};
[obj1,obj2].forEach((o,长度)=>{
Object.keys(o.forEach(k=>hash.add(k));
hash.forEach(k=>{
结果[k]=结果[k]| |数组.from({length}).fill('-');
结果[k].push(k在o?o[k]:'-');
});
});
控制台日志(结果)代码>
.as控制台包装{最大高度:100%!重要;顶部:0;}
快速肮脏方式:
function merge(a,b) {
var c = b
for (key in a){
c[key] = [c[key], a[key]]
}
console.log(c) //prints merged object
}
merge(obj1, obj2)
原始对象关键点周围真的有空格吗?原始对象关键点没有空格。但是,它打印的键类似于下面的“name”
。它会影响吗?不会的。“JSON是一种与文本、语言无关的数据交换格式,很像XML、CSV或YAML。”-为什么标记中包含python、java和数组?这个问题与python、java或JSON无关。