Javascript将4个数组的值合并到一个对象中

Javascript将4个数组的值合并到一个对象中,javascript,arrays,reactjs,object,Javascript,Arrays,Reactjs,Object,我有以下格式的4个数组 arr1 = ['Hello', 'World', 'Hi'] arr2 = ['1', '2', '3'] arr3 = ['foo', 'bar', 'foobar'] arr4 = ['10', '20', '30'] 我试图将索引[I]中的每个值添加到一个新对象中,该对象如下所示 obj = { title: '', score: '', description: '', value: '', } 对于数组中的每个索引值,我希望将其推送到obj对象的一

我有以下格式的4个数组

arr1 = ['Hello', 'World', 'Hi']
arr2 = ['1', '2', '3']
arr3 = ['foo', 'bar', 'foobar']
arr4 = ['10', '20', '30']
我试图将索引[I]中的每个值添加到一个新对象中,该对象如下所示

obj = {
 title: '',
 score: '',
 description: '',
 value: '',
}
对于数组中的每个索引值,我希望将其推送到obj对象的一个新实例,这样我就可以得到这个结果

objects = [
 {
  title: 'Hello',
  score: '1',
  description: 'foo',
  value: '10',
 },
 {
  title: 'World',
  score: '2',
  description: 'bar',
  value: '20',
 },
 {
  title: 'Hi',
  score: '3',
  description: 'foobar',
  value: '30',
 }
]
到目前为止,我一直在尝试类似的东西

objects = []
arr1.forEach((key, i) => objects[key] = arr2[i])
但这就是将它们指定为arr1val:arr2val


我最终会在我的react应用程序中将其设置为状态,并将其作为道具传递给另一个组件,以便在页面上呈现。数据来自3个不同的API,我这样做是为了尝试标准化从每个API接收的数据,以便我的组件可以使用这些数据来呈现文章列表,用户可以在提要之间切换。

通过所有数组中的元素索引进行映射,也可以使用
映射
而不是
forEach

const objects = arr1.map((element, index) => (
 {title: element, score: arr2[index], description: arr3[index], value: arr4[index]}
))
现场演示如下:

const arr1=['Hello','World','Hi']
常量arr2=['1','2','3']
常量arr3=['foo','bar','foobar']
常数arr4=['10','20','30']
const objects=arr1.map((元素,索引)=>(
{title:element,score:arr2[index],description:arr3[index],value:arr4[index]}
))

console.log(objects)
通过所有数组中元素的索引进行映射,也可以使用
Map
而不是
forEach

const objects = arr1.map((element, index) => (
 {title: element, score: arr2[index], description: arr3[index], value: arr4[index]}
))
现场演示如下:

const arr1=['Hello','World','Hi']
常量arr2=['1','2','3']
常量arr3=['foo','bar','foobar']
常数arr4=['10','20','30']
const objects=arr1.map((元素,索引)=>(
{title:element,score:arr2[index],description:arr3[index],value:arr4[index]}
))
console.log(对象)
此代码也适用于:

var arr = [];
for(var i=0; i<arr1.length; i++) {
    arr[i] = {};
    arr[i].title = arr1[i];
    arr[i].score = arr2[i];
    arr[i].description = arr3[i];
    arr[i].value = arr4[i];
}
var arr=[];
对于(var i=0;i此代码也适用:

var arr = [];
for(var i=0; i<arr1.length; i++) {
    arr[i] = {};
    arr[i].title = arr1[i];
    arr[i].score = arr2[i];
    arr[i].description = arr3[i];
    arr[i].value = arr4[i];
}
var arr=[];

对于(var i=0;i如果不想键入两次属性名, 你可以这样做:

const descriptor = {
  title: arr1,
  score: arr2,
  description: arr3,
  value: arr4
};

const objects = arr1.map((tmp, i) => {
  var o = {};
  Object.keys(descriptor).forEach(name => o[name] = descriptor[name][i]);
  return o;
});

如果不想键入两次属性名, 你可以这样做:

const descriptor = {
  title: arr1,
  score: arr2,
  description: arr3,
  value: arr4
};

const objects = arr1.map((tmp, i) => {
  var o = {};
  Object.keys(descriptor).forEach(name => o[name] = descriptor[name][i]);
  return o;
});

我想应该有一个减速机方法

const arr1=['Hello','World','Hi','Hello2','World2','Hi2'];
常数arr2=['1','2','3','11','22','33'];
const arr3=['foo','bar','foobar','sea','shell','seawed'];
常数arr4=['10','20','30','100','200','300'];
const arrays2Objects=arr1.reduce((obj,next,i)=>
obj.concat({标题:next,分数:arr2[i],描述:arr3[i],值:arr4[i]}),
[]
);

log(arrays2Objects);
我想应该有一个reducer方法

const arr1=['Hello','World','Hi','Hello2','World2','Hi2'];
常数arr2=['1','2','3','11','22','33'];
const arr3=['foo','bar','foobar','sea','shell','seawed'];
常数arr4=['10','20','30','100','200','300'];
const arrays2Objects=arr1.reduce((obj,next,i)=>
obj.concat({标题:next,分数:arr2[i],描述:arr3[i],值:arr4[i]}),
[]
);

console.log(arrays2Objects);
我建议使用数组数组和另一个数组作为键。这允许使用任意数量的数组和键将数据转换为具有所需属性的对象数组

var array1=['Hello','World','Hi'],
数组2=['1','2','3'],
数组3=['foo','bar','foobar'],
数组4=['10','20','30'],
关键字=['title','score','description','value'],
结果=[array1,array2,array3,array4].reduce(函数(r,a,i){
a、 forEach(函数(v,j){
r[j]=r[j]|{};
r[j][key[i]]=v;
});
返回r;
}, []);
console.log(结果);

.as console wrapper{max height:100%!important;top:0;}
我建议使用数组数组和另一个键数组。这允许使用任意数量的数组和键将数据转换为具有所需属性的对象数组

var array1=['Hello','World','Hi'],
数组2=['1','2','3'],
数组3=['foo','bar','foobar'],
数组4=['10','20','30'],
关键字=['title','score','description','value'],
结果=[array1,array2,array3,array4].reduce(函数(r,a,i){
a、 forEach(函数(v,j){
r[j]=r[j]|{};
r[j][key[i]]=v;
});
返回r;
}, []);
console.log(结果);

。作为控制台包装器{max height:100%!important;top:0;}
是的!非常感谢您这工作非常完美。非常感谢!非常感谢这工作非常完美。非常感谢。我更喜欢一个好的老
循环。不需要拿出假函数编程的大炮:-)我更喜欢一个好的
for
循环。没有必要拿出假函数编程的大炮:-)我认为这不是预期的结果?我认为这不是预期的结果?