javascript - 在 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...
解决方案
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-of
Array.from
从 ES2015(又名“ES6”)开始,它们都是新的(ish),所以一定要检查你的目标环境是否支持,和/或使用转译(for)和 polyfill(for for-of
)Array.from
。
推荐阅读
- html - 图片必须有替代文本:元素没有标题属性
- java - CORS 正在阻止 PUT、DELETE 和 POST 请求,但 GET 正在工作
- python - Django 将 id 从一个模型传递到另一个模型的外键
- azure-ad-b2c - 登录后 Azure AD B2C 个性化内容
- c++ - 'operator|' 返回的类型 并不总是与您传递的类型匹配
- c# - 如何在c#中将控制台输出转换为JSON格式输出
- node.js - Visual Studio 应用程序以代码 -1 (0xffffffff) 退出,应用程序没有响应连接 Azure IoT Central
- mercurial - mercurial:如何切换到基于非生锈的 hg 构建
- php - 如何编辑代码以允许用户删除折扣代码
- c# - 如何在c#中复制文件时获取文件名