Javascript 如何将平行列表中的对象转换为对象列表?

Javascript 如何将平行列表中的对象转换为对象列表?,javascript,arrays,object,Javascript,Arrays,Object,我有一个像这样的物体 var data = [ { "Name": ["Jane", "Peter", "Jenny"], "Id": [1, 2, 3], "Years": [16, 17, 18] } ]; 但是我想把它放到一个react表中,它需要另一种类似的格式 var data1 = [ { "Name": "Jane", "Id": 1, "Years": 16, }, {

我有一个像这样的物体

var data = [
   {
      "Name": ["Jane", "Peter", "Jenny"],
      "Id": [1, 2, 3],
      "Years": [16, 17, 18]
    }
];
但是我想把它放到一个react表中,它需要另一种类似的格式

var data1 = [
  {
     "Name": "Jane",
     "Id": 1,
     "Years": 16,
   },
   {
      "Name": "Peter",
      "Id": 2,
      "Years": 17,
    },
    {
       "Name": "Jenny",
       "Id": 3,
       "Years": 18,
     }
]

如何使用JSX转换它?

我会找出最大属性长度(如果它们不完全相同),创建一个大小相同的数组,在for循环中迭代,使用数据键和匹配的索引位置创建对象(
null
如果不匹配),然后将它们推送到数组中

const数据=[{
“姓名”:[“简”、“彼得”、“珍妮”],
“Id”:[1,2,3],
“年份”:[16、17、18]
}]
const interestingData=数据[0]
const keys=Object.keys(兴趣数据)
const maxItems=keys.reduce((count,key)=>Math.max(count,interestingData[key].length),0)
const transformed=新数组(maxItems)
对于(变量i=0;iObject.assign(obj{
[key]:interestingData[key][i]| | null//如果没有匹配索引,则为默认值
}),Object.create(空))
}

console.info(transformed)
我会找出最大属性长度(如果它们不完全相同),创建一个大小相同的数组,在for循环中迭代,使用数据键和匹配的索引位置创建对象(
null
如果不匹配),然后将它们推到数组中

const数据=[{
“姓名”:[“简”、“彼得”、“珍妮”],
“Id”:[1,2,3],
“年份”:[16、17、18]
}]
const interestingData=数据[0]
const keys=Object.keys(兴趣数据)
const maxItems=keys.reduce((count,key)=>Math.max(count,interestingData[key].length),0)
const transformed=新数组(maxItems)
对于(变量i=0;iObject.assign(obj{
[key]:interestingData[key][i]| | null//如果没有匹配索引,则为默认值
}),Object.create(空))
}

console.info(已转换)
这里是解决您的问题的非常直接的实现。对于迭代,我考虑了对象内部Name数组的长度

var数据=[{
“姓名”:[“简”、“彼得”、“珍妮”],
“Id”:[1,2,3],
“年份”:[16、17、18]
}];
VarData1=[];
var迭代次数=数据[0]。Name.length;
var requiredData=数据[0];
var keyArray=Object.keys(requiredData);
对于(var i=0;ilog('data1=',data1)
这里是解决您的问题的非常直接的实现。对于迭代,我考虑了对象内部Name数组的长度

var数据=[{
“姓名”:[“简”、“彼得”、“珍妮”],
“Id”:[1,2,3],
“年份”:[16、17、18]
}];
VarData1=[];
var迭代次数=数据[0]。Name.length;
var requiredData=数据[0];
var keyArray=Object.keys(requiredData);
对于(var i=0;ilog('data1=',data1)
您可能会编写一些代码。你尝试过什么?如果
Name
Id
Years
中的数组没有相同数量的项目,会发生什么情况?@Phil我认为不会发生这种情况,它会将
0
放在相同数量的项目上,以更好地编写健壮的代码,以防没有。“我如何用JSX转换它?”-您不会使用任何JSX功能来进行转换,您会使用普通JS。您可能会编写一些代码。你尝试过什么?如果
Name
Id
Years
中的数组没有相同数量的项目,会发生什么情况?@Phil我认为不会发生这种情况,它会将
0
放在相同数量的项目上,以更好地编写健壮的代码,以防没有。“我如何用JSX转换它?”-您不会使用任何JSX功能进行转换,而是使用普通JS。