在JavaScript中将数组合并为单个对象

Vin*_*hua 5 javascript arrays object

目前我有3个阵列:

var idArray = [13, 24, 35];    
var dateArray = [20181920, 20181120, 20172505];
var contentArray = ["content1", "content2", "content3"];
Run Code Online (Sandbox Code Playgroud)

我想将所有数组合并为一个对象而我尝试使用for循环但是却出现了错误:

var finalObj = {};

for (var y = 0; y < dateArray.length; y++) { 
    finalObj[y].id = idArray[y];
    finalObj[y].date =  dateArrayArrange[y];
    finalObj[y].content =  contentArray[y];

}
Run Code Online (Sandbox Code Playgroud)

我想达到的最终结果:

finalObj = [{id:13, date:20181920, content:"content1"},
          {id:24, date:20181120, content:"content2"},
          {id:35, date:20172505, content:"content3"}];
Run Code Online (Sandbox Code Playgroud)

brk*_*brk 7

finalObj 是一个对象,您需要在数组中推送值.除此之外,您还可以使用map将返回数组的数组方法,因此无需单独将值推送到数组.

在任何数组上使用map方法,并使用它index从其他数组中获取相应的值

var idArray = [13, 24, 35];
var dateArray = [20181920, 20181120, 20172505];
var contentArray = ["content1", "content2", "content3"];

let m = idArray.map(function(item, index) {
  // here the map method will push the object to an 
  // array and will return that array
  return {
    id: item,
    date: dateArray[index],
    content: contentArray[index]
  }

})
console.log(m)
Run Code Online (Sandbox Code Playgroud)


Jay*_*ffe 3

finalObj是一个对象数组,因此您必须将其初始化为数组,如下所示:

var finalObj = [];
var idArray = [13, 24, 35];
var dateArray = [20181920, 20181120, 20172505];
var contentArray = ["content1", "content2", "content3"];

for (var y = 0; y < dateArray.length; y++) {
  finalObj.push(
    { id: idArray[y], date: dateArray[y], content : contentArray[y] }
  )
}
Run Code Online (Sandbox Code Playgroud)

对于“推送到最终数组”部分,如果您添加额外的内容finalObj[y] = {}来初始化它,则循环内的代码可能会起作用,因此您有:

for (var y = 0; y < dateArray.length; y++) {
  finalObj[y] = {}  
  finalObj[y].id = idArray[y];
  finalObj[y].date = dateArray[y];
  finalObj[y].content = contentArray[y];
}
Run Code Online (Sandbox Code Playgroud)

它有效但是

  finalObj.push(
    { id: idArray[y], date: dateArray[y], content : contentArray[y] }
  )
Run Code Online (Sandbox Code Playgroud)

我认为更短并且仍然可读:)