前端面试题:不使用loop循环,创建一个长度为100的数组,并且每个元素的值等于它的下标,,怎么实现好?
昨天,看这道题,脑子锈住了,就是没有思路,没看明白是什么意思?⊙﹏⊙‖∣今天早上起床,想到需要思考一下这个问题。
当然,我没想明白为什么要这样做?(创建一个长度为100的数组,并且每个元素的值等于它的下标。)
1.需要创建这样的一个数组:
var array = [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];
这种 “简单粗暴 通俗易懂” 的答案,肯定不是这道题的“内含”。一个一个输入,这种方法实现不好。(呆萌的声明赋值方式)
2.不能使用loop循环()
/*
前端面试题:不使用loop循环,创建一个长度为100的数组,并且每个元素的值等于它的下标,怎么实现好?
*/
var myArray;
myArray = null; var array = new Array(100);
创建一个长度为100的数组,注意该数组的元素并没有被初始化;
控制台打印结果:
生成的是稀疏数组,返回值不是数组,可以叫类数组对象,具有length属性的对象。
console.log(0 in array);//false
console.log(1 in array);//false,因为下标0,1还未初始化
console.log(array[1]);//undefined 因为数组下标0还未初始化,访问不存在的属性返回undefined
javascript并没有常规的数组,所有的数组其实就是个对象,只不过会自动管理一些 “数字”属性和length属性。
javascript中的数组根本没有索引,因为索引应该是数字,而javascript中数组的索引其实是字符串:array[0] = array["0"]; array[1] = array["1"]; ... array[99] = array["99"];array.length也会变成100.
这些表现的根本原因:javascript中的对象就是字符串到任意值的键值对。注意键只能是字符串。
我们接下来需要把上面的类数组对象转换成一个真正的数组。
Array.form():将类数组对象或可迭代对象转化为数组。
a.参数为数组,返回与原数组一样的数组
b.参数含有空位,稀疏数组的情况
到了这里,和上面 "呆萌的声明赋值" 方式越来越接近了。
/*
前端面试题:不使用loop循环,创建一个长度为100的数组,并且每个元素的值等于它的下标,怎么实现好?
*/
var myArray;
myArray = null; var array = Array.from(new Array(100)); //map()方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
//map()方法按照原始数组元素顺序依次处理元素
//map()方法不会对空数组进行检测,也不会改变原始数组
//语法:array.map(function(currentValue,index,arr), thisValue)
//function(currentValue,index,arr):必须函数,数组中的每一个元素都会执行此函数
//currentValue:当前元素的值,在此代码中就是undefined,
//index:当前元素的索引值
//arr:当前元素属于的数组对象
array = array.map((item,index)=>index);
控制台打印:
第一种:这是第一种实现方式:Array.from() + array.map
Array.from(new Array(100)).map((item,index)=>index);
第二种:Array.from()实现
Array.from()语法:
Array.from(new Array(100), (item, index) => index)
第三种:实现方式 setInterval(function(){},0)
如果不是有人提示:两种定时器,真的想不到,在这种情况下用定时器。
var array = [],
i = 0;
var interval = setInterval(function() {
i < 100 ? array.push(i++) : clearInterval(interval);
}, 0);
前端面试题:不使用loop循环,创建一个长度为100的数组,并且每个元素的值等于它的下标,,怎么实现好?的更多相关文章
- 不用循环,、es6创建一个长度为100的数组
问题描述:在不使用循环的条件下,如何创建一个长度为100的数组,并且数组的每一个元素是该元素的下标? 结果为: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1 ...
- 创建一个长度是5的数组,并填充随机数。使用for循环或者while循环,对这个数组实现反转效果
package day01; import java.util.Random; /** * 首先创建一个长度是5的数组,并填充随机数.使用for循环或者while循环,对这个数组实现反转效果 * @a ...
- 前端面试题(JavaScript)
(前端面试题大全,持续更新) 箭头函数特点?箭头函数和普通函数的区别 手写懒加载(考虑防抖和重复加载问题) 手写bind(为什么要加预参数,为什么要加new) apply, call, bind ne ...
- 各大互联网公司前端面试题(js)
对于巩固复习js更是大有裨益. 初级Javascript: 1.JavaScript是一门什么样的语言,它有哪些特点? 没有标准答案. 2.JavaScript的数据类型都有什么? 基本数据类型 ...
- 2016最全的web前端面试题及答案整理
面试web前端开发,不管是笔试还是面试,都会涉及到各种专业技术问题,今天小编整理了一些常见的web前端面试题及答案,希望对大家有所帮助. 1.常用那几种浏览器测试?有哪些内核(Layout Engin ...
- 史上最全前端面试题(含答案)-A篇
HTML+CSS1.对WEB标准以及W3C的理解与认识标签闭合.标签小写.不乱嵌套.提高搜索机器人搜索几率.使用外 链css和js脚本.结构行为表现的分离.文件下载与页面速度更快.内容能被更多的用户所 ...
- 【重点--web前端面试题总结】
前端面试题总结 HTML&CSS: 对Web标准的理解.浏览器内核差异.兼容性.hack.CSS基本功:布局.盒子模型.选择器优先级及使用.HTML5.CSS3.移动端适应. JavaScri ...
- Vue 前端面试题
Vue 前端面试题 1. 说一下 Vue 的双向绑定数据的原理 vue 实现数据双向绑定主要是:采用数据劫持结合“发布者 - 订阅者”模式的方式,通过 Object.defineProperty() ...
- vue前端面试题知识点整理
vue前端面试题知识点整理 1. 说一下Vue的双向绑定数据的原理 vue 实现数据双向绑定主要是:采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty() 来劫 ...
随机推荐
- ASYNC_NETWORK_IO等待事件和调优
测试反应测试数据库整体出现hang的情况,检查对应的等待事件,发现大量的resource_semaphore等待事件, 查看内存占用情况: SELECT * FROM sys.dm_exe ...
- 深入探究JVM(1) - Java的内存区域解析
http://blog.csdn.net/sczyh22/article/details/46652901<br>Java 虚拟机在执行Java程序的时候会把它管理的内存区域划为几部分,这 ...
- 前后端分离项目中后台集成shiro需要注意的二三事
1. 修改 Shiro 认证失败后默认重定向处理问题 a. 继承需要使用的 ShiroFilter,重载 onAccessDenied() 方法: @Override protected boolea ...
- 记一次odoo创建新的模块时,但是在odoo web界面找不到应用的案例
原因就是在odoo.conf配置文件中没有说明 模块查找的路径
- linux环境常用分析日志的几个命令
前言: 分析日志是定位问题的常用手段,但实际线上可能有大量日志,掌握一些常见查看.过滤和分析日志的命令能起到事半功倍的效果.下面列出工作中最常用的一些命令,可在具体使用是查看,尝试使用.实际使用使往往 ...
- .Net Core 使用 System.Drawing.Common 在CentOS下报错
.Net Core控制台项目,添加了 System.Drawing.Common 引用 #locate libdl /usr/lib64/libdl-2.17.so /usr/lib64/libdl. ...
- 06 使用bbed修复update的数据--01
场景1 表t3 SQL> select * from t3; ID NAME ---------- -------------------- aaa bbbb SQL> update t3 ...
- 【EWM系列】SAP 关于EWM的WT增强简介
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP 关于EWM的WT增强简介 ...
- YOLOv3 算法的详细说明
YOLOv3没有太多的创新,主要是借鉴一些好的方案融合到YOLO里面.不过效果还是不错的,在保持速度优势的前提下,提升了预测精度,尤其是加强了对小物体的识别能力. 本文主要讲v3的改进,由于是以v1和 ...
- vue子组件修改父组件传递过来的值
这里不再赘述父子组件及子父组件传值,不懂的同学可以翻看我以前写过的关于两者传值的文章 父子组件传值:https://www.cnblogs.com/Sky-Ice/p/9267192.html 子父组 ...