快速生成0到N的数组的几种方法

您所在的位置:网站首页 python创建1到10的数组 快速生成0到N的数组的几种方法

快速生成0到N的数组的几种方法

2024-04-02 07:00| 来源: 网络整理| 查看: 265

这是我参与8月更文挑战的第4天,活动详情查看:8月更文挑战

前言

这几天在做一个需求,需要生成一个固定长度的数组,数组的元素是从0开始,依次递增。最后我是使用for循环生成的。除了for循环,还有别的方法吗?

答案是肯定的。

这里就把这些方法总结下,方便后面查漏补缺,同时把这些知识点巩固一下。

以下的所有例子,我都是用10代替N,你可以把10改成自己需要的数字

for循环

这应该是最常规的方法,也是最容易想到的方法。

不多说,直接来看代码:

let arr = [] for(let i = 0; i < 10; i++) { arr.push(i) } console.log(arr) // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

那除了for循环之外,还有哪些方法呢?

Array.from

Array.from是把类数组或者可迭代对象转成真正的数组。

Array.from接受三个参数

obj

必填,需要转换的类数组或者可迭代对象,比如node节点,Set,Map等

fn

可选,回调函数,转成的数组的每个元素都会执行该回调函数

thisArgs

可选,执行回调函数如果需要指定this对象,可以提供该参数

这里需要注意的是,obj只要有length属性,则就会生成对应length长度的数组

所以这里我们可以写:

Array.from({length: 10}, (val, i) => i) // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

另外,

我们还可以使用数组原型链上的keys方法, 这个方法返回一个Iterator接口的对象,里面的值是数组的的下标,然后再把该对象传入Array.from中

代码如下

Array.from(new Array(10).keys()) // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

我们还可以使用Object.keys, 这个方法是获取对象的key属性,返回一个数组。

如果对象是数组的话,则key是数组的下标

所以这里我们可以写:

Object.keys(Array.from({length: 10})) // ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]

但是这里数组的元素是字符串,我们可以继续优化下

Object.keys(Array.from({length: 10})).map((val, i ) => +i) // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 扩展运算符

扩展运算符,针对具有Iterator接口的对象进行展开

所以我们可以把上面的例子改下

// 因为keys()返回的都是Iterator接口的对象 [...new Array(10).keys()]; // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [...Array.from({length: 10}).keys()] // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 总结

以上就是我总结的快速生成1到N的数组的几种方法,当然不局限于以上这些,如果还有别的方法,欢迎评论沟通。

在上面这些方法中,最常规是for循环,但是我们也可以了解Array.form和扩展运算符的用法,多学一点总是没有错的。

希望对你们有帮助。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3