快速生成0到N的数组的几种方法 |
您所在的位置:网站首页 › python创建1到10的数组 › 快速生成0到N的数组的几种方法 |
这是我参与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.fromArray.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 |