javascript 生成简单等差数列

注 本文所有的代码的前提是

let a = 3
let b = 9复制代码

并且示例代码都会return结果数组

问题

前几天一个朋友问的问题

已知数组的起始数字,生成一个公差为1的等差数列

基础方法

题目很简单,最简单的办法就是使用for循环

let arr = []
for (let i = 0; i < b - a + 1; i++) {
  arr.push(i + a)
}
return arr复制代码

进阶

之后再想起来时感觉之前的方法有点愚蠢,遂又想出这些方法

数组空位

join()和toString()会将空位视为undefined(字符串形式):

// 拼接 > 分割 > map
Array(b - a + 1).join(' ').split(' ').map((e, i) => a + i)

// 转字符串 > 分割 > map
Array(b - a + 1).toString().split(',').map((e, i) => a + i)复制代码

利用Array.from方法实现:

// 空数组转真数组
Array.from(Array(b - a + 1)).map((e, i) => a + i)

// 类似数组的对象转数组
Array.from({ length: b - a + 1 }).map((e, i) => a + i)
Array.from({ length: b - a + 1 }, (e, i) => a + i)复制代码

ES6的扩展运算符还可以帮我们更方便地完成这件事

[...Array(b - a + 1)].map((e, i) => a + i)复制代码

fill()、entries()、keys()方法也不会忽略空位

Array(b - a + 1).fill(' ').map((e, i) => a + i)
[...Array(b - a + 1).entries()].map(e => e[0] + a)
[...Array(b - a + 1).keys()].map(e => e + a)复制代码

还有其他的途径可以完成这件事,比如findIndex()、find()、for...of等,这几个方法实现起来也不够简单,就不多余赘述了

我个人更喜欢扩展运算符的方式,更短更简单。

转载于:https://juejin.im/post/5a1c001e6fb9a045211e6e55

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值