Javascript 如何从具有多个键的json对象收集数据,并将所有值推送到单键:值数组

Javascript 如何从具有多个键的json对象收集数据,并将所有值推送到单键:值数组,javascript,json,object,ecmascript-6,foreach,Javascript,Json,Object,Ecmascript 6,Foreach,我有一个示例json对象: var jsonString = '[{ "name":"John", "age":30, "car":Mercedes},{ "name":"Jimy", "age":32, "car":Audi},{ "name":"Mia", "age":22, "car":Renault},{ "name":"Frank", "age":35, "car":null }]'; var data = JSON.parse(jsonString); 我想从数据数组中获取最新

我有一个示例json对象:

var jsonString = '[{ "name":"John", "age":30, "car":Mercedes},{ "name":"Jimy", "age":32, "car":Audi},{ 
"name":"Mia", "age":22, "car":Renault},{ "name":"Frank", "age":35, "car":null }]';

var data = JSON.parse(jsonString);
我想从数据数组中获取最新的两个数据,并创建一个key:value数组,这样对于每个json属性,数组中都有一个键,来自所有json对象的所有值都存储在它们相应的键下,因此,例如,我想得到的结果是一般的数组[{key:data\u array\u for_that\u key}]或者具体地说:

output=[{name: [Frank, Mia]}, {age: [35,22]}, {car: [null, Renault]}......]
我试过这样的方法:

var output = [];

  data.slice(-2).forEach((d, i) => {
    Object.keys(d).forEach((key) => {
      output.push({[key] : d[key]});
    });
  });
  console.log(output);
但它为每个json对象创建一个键和值,这不是我想要的


如何解决这个问题?

您可以为相同的键分组一个哈希表,并为每个新键推送一个新对象以
输出

var jsonString='[{“姓名”:“约翰”,“年龄”:30,“汽车”:“梅赛德斯”},{“姓名”:“吉米”,“年龄”:32,“汽车”:“奥迪”},{“姓名”:“米亚”,“年龄”:22,“汽车”:“雷诺”},{“姓名”:“弗兰克”,“年龄”:35,“汽车”:空},
data=JSON.parse(jsonString);
输出=[],
温度=[];
data.slice(-2).forEach(o=>Object.entries(o).forEach([k,v])=>{
if(!temp[k])output.push({[k]:temp[k]=[]);
温度[k]。推力(v);
}));
控制台日志(输出)

。作为控制台包装器{max height:100%!important;top:0;}
您可以为相同的键分组一个哈希表,并为每个新键推送一个新对象以输出

var jsonString='[{“姓名”:“约翰”,“年龄”:30,“汽车”:“梅赛德斯”},{“姓名”:“吉米”,“年龄”:32,“汽车”:“奥迪”},{“姓名”:“米亚”,“年龄”:22,“汽车”:“雷诺”},{“姓名”:“弗兰克”,“年龄”:35,“汽车”:空},
data=JSON.parse(jsonString);
输出=[],
温度=[];
data.slice(-2).forEach(o=>Object.entries(o).forEach([k,v])=>{
if(!temp[k])output.push({[k]:temp[k]=[]);
温度[k]。推力(v);
}));
控制台日志(输出)
。作为控制台包装{最大高度:100%!重要;顶部:0;}