【发布时间】:2016-04-11 18:06:12
【问题描述】:
我从两个等长数组开始,我想创建一个由子数组组成的新数组,每个子数组都是由两个数组的每个索引处的元素组合而成。这就是我的意思:
// 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 解决这个问题。
【问题讨论】:
-
google zip javascript 数组。许多库(lodash、下划线等)都实现了该功能,我最喜欢 Ramda。
-
代码看起来不错,在 FireFox 中的输出也是正确的。
-
您的代码有效。您的控制台不会像您想要的那样显示阵列。使用另一个浏览器,该浏览器的控制台行为符合您的要求。或者对数组进行字符串化。
-
我投票结束这个问题作为题外话,因为代码有效。唯一的问题是 OP 的开发人员工具的行为不像他预期的那样。
-
@BrianZ 我也看到了与您看到的相同的输出。问题是浏览器控制台可以随意表示对象。我认为您的规范缺少一些东西。因为你当前的输出和预期的输出是完全一样的。只是在屏幕上的表现不同。
标签: javascript arrays