Javascript 如何将多个对象中的值合并到一个数组对象中?

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],

我有两个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],
    "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无关。