将两个数组中的元素组合到第三个数组中

Combine elements from two arrays into subarrays in a third array

本文关键字:数组 组合 三个 元素 两个      更新时间:2024-05-07

我从两个等长数组开始,我想创建一个由子数组组成的新数组,每个子数组都是由两个数组的每个索引处的元素组合而成的。我的意思是:

// the 2 initial arrays:
var arr1 = ["Quote1", "Quote2", "Quote3"];
var arr2 = ["Author1", "Author2", "Author3"];
// the output I need to achieve:
[ ["Quote1", "Author1"], ["Quote2", "Author2"], ["Quote3", "Author3"] ];

问题是我的代码向console.log:产生以下输出

Array [ Array[2], Array[2], Array[2] ]

我得到的有问题的输出没有显示每个子数组的实际值,它只显示每个子阵列的长度。

这是我的代码:

var quotesArr = ["Quote 1", "Quote 2", "Quote 3"];
var authorsArr = ["Author 1", "Author 2", "Author 3"];
var quoteMeetsAuthor = [];
var quotesAndAuthors = [];

function combineArrays(quotes,authors) {
  if (quotes.length != authors.length) {
    console.log("Danger Will Robinson!");
    return "Danger Will Robinson!";
  }
  for (i=0; i<quotes.length; i++) {
    quoteMeetsAuthor.push(quotes[i]);
    quoteMeetsAuthor.push(authors[i]);
    quotesAndAuthors.push(quoteMeetsAuthor);
    quoteMeetsAuthor = [];
  }
  console.log(quotesAndAuthors);
  return quotesAndAuthors;
}
combineArrays(quotesArr, authorsArr);

有人能提供建议吗?

编辑:我想使用普通javascript来解决这个问题。

以下是我为解决您的问题而想出的方法。此外,请尝试使用alert()而不是console.log()来查看真实结果。console.log()有时不会显示所有内容,因此您需要扩展它存储的内容:

var arr1 = ["Quote1", "Quote2", "Quote3"];
var arr2 = ["Author1", "Author2", "Author3"];
// the output I need to achieve:
//[ ["Quote1", "Author1"], ["Quote2", "Author2"], ["Quote3", "Author3"] ];
var newArr = [[],[],[]];
for(var i = 0; i < newArr.length; i++){
    newArr[i].push(arr1[i]);
    newArr[i].push(arr2[i]);
}
alert(newArr);