昨天,看这道题,脑子锈住了,就是没有思路,没看明白是什么意思?⊙﹏⊙‖∣今天早上起床,想到需要思考一下这个问题。

当然,我没想明白为什么要这样做?(创建一个长度为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的数组,并且每个元素的值等于它的下标,,怎么实现好?的更多相关文章

  1. 不用循环,、es6创建一个长度为100的数组

    问题描述:在不使用循环的条件下,如何创建一个长度为100的数组,并且数组的每一个元素是该元素的下标? 结果为: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1 ...

  2. 创建一个长度是5的数组,并填充随机数。使用for循环或者while循环,对这个数组实现反转效果

    package day01; import java.util.Random; /** * 首先创建一个长度是5的数组,并填充随机数.使用for循环或者while循环,对这个数组实现反转效果 * @a ...

  3. 前端面试题(JavaScript)

    (前端面试题大全,持续更新) 箭头函数特点?箭头函数和普通函数的区别 手写懒加载(考虑防抖和重复加载问题) 手写bind(为什么要加预参数,为什么要加new) apply, call, bind ne ...

  4. 各大互联网公司前端面试题(js)

    对于巩固复习js更是大有裨益.    初级Javascript: 1.JavaScript是一门什么样的语言,它有哪些特点? 没有标准答案. 2.JavaScript的数据类型都有什么? 基本数据类型 ...

  5. 2016最全的web前端面试题及答案整理

    面试web前端开发,不管是笔试还是面试,都会涉及到各种专业技术问题,今天小编整理了一些常见的web前端面试题及答案,希望对大家有所帮助. 1.常用那几种浏览器测试?有哪些内核(Layout Engin ...

  6. 史上最全前端面试题(含答案)-A篇

    HTML+CSS1.对WEB标准以及W3C的理解与认识标签闭合.标签小写.不乱嵌套.提高搜索机器人搜索几率.使用外 链css和js脚本.结构行为表现的分离.文件下载与页面速度更快.内容能被更多的用户所 ...

  7. 【重点--web前端面试题总结】

    前端面试题总结 HTML&CSS: 对Web标准的理解.浏览器内核差异.兼容性.hack.CSS基本功:布局.盒子模型.选择器优先级及使用.HTML5.CSS3.移动端适应. JavaScri ...

  8. Vue 前端面试题

    Vue 前端面试题 1. 说一下 Vue 的双向绑定数据的原理 vue 实现数据双向绑定主要是:采用数据劫持结合“发布者 - 订阅者”模式的方式,通过 Object.defineProperty() ...

  9. vue前端面试题知识点整理

    vue前端面试题知识点整理 1. 说一下Vue的双向绑定数据的原理 vue 实现数据双向绑定主要是:采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty() 来劫 ...

随机推荐

  1. MacOS上zsh环境设置默认jdk

    进入home目录 cd ~ 修改.zprofile文件 vi .zprofile 按i进入vim插入模式,添加以下代码 export JAVA_HOME="/Library/Java/Jav ...

  2. 模拟赛DAY1 T2腐草为萤

    2.腐草为萤(dzy.cpp/c) [题目背景] 纤弱的淤泥中妖冶颓废在季夏第三月最幼嫩的新叶连凋零都不屑何必生离死别——银临<腐草为萤> [问题描述] 扶苏给了你一棵树,这棵树上长满了幼 ...

  3. 纯CSS3写一个立方体并在鼠标悬停的时候无限循环旋转

  4. 使用Dockerfile封装Django镜像

    第一步: 在/opt下建立了docker目录,下载一个django-2.1.7的源码包, touch Dockerfile和run.sh,其中run.sh是用来执行Django的bash脚本,Dock ...

  5. Vue知识整理5:v-bind绑定属性(Class 与 Style 绑定)

    通过v-bind实现Class 与 Style 绑定,方便调整属性的值

  6. 007-elasticsearch5.4.3【一】概述、Elasticsearch 访问方式、Elasticsearch 面向文档、常用概念

    一.概述 Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上. Elasticsearch 也是使用 Java 编写的,它的内部使用 L ...

  7. LeetCode 算法 Part 1

    目录 1. 两数之和 1. 题目 2.代码 4. 算法用时 5. 感想 2. 两数相加 1. 题目 2.代码 4. 算法用时 5. 感想 3. 无重复字符的最长子串 1. 题目 2.代码 4. 算法用 ...

  8. Vue 基础 day04

    什么是路由 后端路由: 对于普通的网站,所有的超链接都是URL地址,所有的URL地址都对应服务器的资源: 前端路由: 对于单页面应用程序来说,主要是通过URL中的hash(#)来实现不同页面之间的跳转 ...

  9. [Web 前端] 009 css 常用的文本样式设置

    常用的文本 css 样式 概览 参数 释义 举例 color 设置文字的颜色 color:red; font-size 设置文字的大小 font-size:12px; font-family 设置文字 ...

  10. Java-集合第六篇操作集合的工具类Collections

    1.Java提供了一个操作Set.List.Map等集合的工具类:Collections. 工具类中提供的方法主要针对Set.List.Map的排序.查询.修改等操作,以及将集合对象设置为不可变.对集 ...