首页 > 解决方案 > 在 JavaScript 中使用 for 循环组合两个数组

问题描述

我想知道是否有更聪明的方法来 1)声明两个数组,尤其是数字一(可能使用点运算符?),以及 2)将这两个数组的字符串元素组合成第三个而不使用旧的用 Array.map() 或 Array.from() 制作 for 循环?

const letters=['a', 'b', 'c', 'd']
const numbers=[1, 2, 3, 4, 5, 6]

const combined=[]

for (let i=0; i < letters.length; i++)
{
    for (let j=0; j < numbers.length; j++)
    {
        combined.push(letters[i] + numbers[j]);
    }
}

// output a1, a2, a3, a4, a5, a6, b1...

标签: javascriptarraysdictionaryfor-loopelement

解决方案


1)声明两个数组,尤其是数字一(可能使用点运算符?)

您的意思是创建而不是声明(您不在 JavaScript 中声明数组,因为它是一种松散类型的语言)。是的,您可以使用数组文字:

var letters = ["a", "b", "c", "d"];

split

var letters = "abcd".split("");

...尽管是否split“更聪明”是一个见仁见智的问题。:-)

您还可以使用以下映射功能Array.from

var letters = Array.from(Array(4), (_, index) => String.fromCharCode(97 + index));

但这可能有点过头了。正如您提到的,对于数字一更有意义:

var numbers = Array.from(Array(6), (_, index) => index + 1); // Note I've renamed it to be plural

2) 将这两个数组的字符串元素组合成一个组合,而不使用老式的 for 循环,也许使用 Array.map() 或 Array.from()?

for循环简单明了,但for-of可能更简单明了:

for (const letter of letters) {
    for (const number of numbers) { // Note I've renamed the `numbers` array to be plural
        combined.push(letter + number);
    }
}

Array.from尽管您可以通过对索引进行数学运算来将其硬塞到一个,但对我来说这太复杂了。


for-ofArray.from从 ES2015(又名“ES6”)开始,它们都是新的(ish),所以一定要检查你的目标环境是否支持,和/或使用转译(for)和 polyfill(for for-ofArray.from


推荐阅读