【面试题】创建长度为100的数组
2 点赞
0 条评论
2852 次浏览
发布于 2020-08-05 15:59
不用循环创建一个长度为100的数组,并且每个元素的值等于它的下标
先来说一下最直接的解法…
var arr=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99];
接下来转入正题。。。
传统for循环
来说一下传统的for循环:
var arr=new Array(100)for(var i=0;i<arr.length;i++){arr[i]=i}arr;
想必大家都没什么问题
不用for循环
但是如何不用 for 循环实现呢?
ES5的实现
Object.keys(Array.from({length:100}));
什么?Array.from
是ES6的?没事,我们可以换成ES5的
Object.keys(Array.apply(null,{length:100}));
这样似乎的确完成了功能,但是还有一个问题,此时值是字符串类型,所以我们可以用ES5的 map 方法进行处理一下:
Object.keys(Array.from({length:100})).map(function(item){return+item});
这里用了一个小技巧,字符串前面加一个“+”就可以转成数字。如果你不喜欢这样,可以使用parseInt,也是一样的效果。
ES6的实现
普通实现
ES6中数组实例有 keys、values、entries方法,分别用于遍历数组的索引、键值、键值对,它们都返回遍历器对象
因此我们可以用ES6的Array.from
转成数组:
Array.from(new Array(100).keys());
Array.from
其实还有一个回调函数,可以很方便遍历处理每一个数据
Array.from({length:100},(v,i)=>i);
Array.from(Array(100),(v,i)=>i);
优雅进阶-扩展运算符
ES6新增...
扩展运算符,极大方便了相关操作
因此我们可以更加优雅地实现:
[...Array(100).keys()]
或者
[...Array.from({length:100}).keys()]
思路就是这样,当然我们还可以混合搭配出各种解法,甚至ES5、ES6混合有可能还有各种奇妙解法,每个人去细细专研吧
"赞助我们,我们才能做的更多&更好"
赞助支持
还没有评论
写下你的评论...
最热文章
使用dart-sass替换node-sass
5192 浏览 · 0 评论
浏览器后退跳转到指定的页面
3866 浏览 · 0 评论
好玩的CSS3(3)-- 翻转(旋转正反两张)图片
3860 浏览 · 0 评论
Flutter适配夜间模式
3611 浏览 · 0 评论
pc端常用电脑屏幕分辨率尺寸适配
3570 浏览 · 0 评论
最新文章
js通过扫码枪快速录入的实现
406 浏览 · 0 评论
使用 WebSocket 实现你画我猜实时绘图
745 浏览 · 0 评论
基于code-server部署自己的云端vscode
2871 浏览 · 0 评论
支付宝动态收款码生成自定义金额及备注
2863 浏览 · 0 评论
使用 nohup 命令将程序挂载在后台执行
1959 浏览 · 0 评论
基于OpenLayers实现离线地图
2802 浏览 · 0 评论