美文网首页让前端飞Web前端之路
前端笔记(6)JavaScript数组

前端笔记(6)JavaScript数组

作者: sullay | 来源:发表于2019-09-28 23:54 被阅读0次

在最新的TypeScript 3.6中实现了更准确的数组扩展。借此机会聊一下我对js中数组的一点理解。

使用Array()初始化数组

先来看一下下面的两行代码

1 in [undefined, undefined, undefined] // true
1 in Array(3) // false

再看一下接下来代码

  let arr=new Array(3).map(()=>{return 3})
  console.log(arr) //(3) [empty × 3]

可见使用无论使用Array方法还是使用Array构造器所生成的数组均为没有索引与元素单存在length属性的空数组。(参数为单个非负整数时)
map方法对于没有赋值或者被delete删除的索引不会调用

初始化数组

以下三种方法都可以得到一个[undefined, undefined, undefined]数组

Array(...Array(3))
Array.apply(null,Array(3))
Array.apply(null,{length:3})

第一种第二种方法比较好理解,但是第三种apply方法的第二个参数为数组为什么传入一个对象同样可以执行。据我测试后发现ie8及以下版本中会直接报错,chrome、firefox、edge、ie9-11中可以执行。目前大部分浏览器都支持apply传入一个类数组对象。有些文章中称是因为{length:3}为一个可迭代方法,实际上是错误的说法,对象是否可迭代实际上是由对象及其原型链上是否存在[Symbol.iterator]方法决定的。调用该方法可以得到一个对象的迭代器,调用对象的keys方法也可以得到一个相同的迭代器

[1,2,3][Symbol.iterator]()
[1,2,3].keys()

另外enumerable为false的属性无法被keys、for in 、entries枚举。

let tempArr=[1,2,3]
Object.defineProperty(tempArr,'0',{enumerable:false})
for(let i in tempArr){
    console.log(tempArr[i])
} //2 3
Object.keys(tempArr) //(2) ["1", "2"]
Object.entries(tempArr) //(2) [["1", 2],["2", 3]]

相关文章

  • 前端笔记(6)JavaScript数组

    在最新的TypeScript 3.6中实现了更准确的数组扩展。借此机会聊一下我对js中数组的一点理解。 使用Arr...

  • 深入JavaScript数组:进化与性能

    /* 原文阅读自前端早读课1071期 */ 为什么说JavaScript数组不是真正的数组   数组是用来存储元素...

  • 《重学前端》笔记: 101 JavaScript: 类型和对象

    《重学前端》笔记: 模块一: JavaScript: 类型和对象 JavaScript类型:关于类型,有哪些你不知...

  • JavaScript学习笔记(二)

    慕课网JavaScript进阶篇第1-6章学习笔记,JS基础语法,数组,流程控制语句,函数,事件 JavaScri...

  • web前端入门基础

    web前端基础笔记 学习web前端开发基础技术需要掌握:HTML、CSS、JavaScript语言。下面我们就来了...

  • JavaScript数组

    javascript笔记(二) 数组 length 设置length会导致数组丢掉超长的数据,很危险,要小心。 以...

  • JavaScript笔记

    JavaScript笔记js的数据类型(6种)js的==和===字符串的操作数组的操作Math对象的操作JSON操...

  • JavaScript 数组笔记

    join():把数组的所有元素放入到一个字符串; pop():删除最后一个元素并返回删除的元素; push():向...

  • JS基础之ES6 数组的改进

    数组是一种基础的JavaScript对象。ES6标准继续改进数组,添加了很多功能。 一、 创建数组 在es6以前,...

  • 2019-03-13

    web前端 JavaScript 基础 day6 JavaScript:页面脚本语言,主要用于用户的交互逻辑处理 ...

网友评论

    本文标题:前端笔记(6)JavaScript数组

    本文链接:https://www.haomeiwen.com/subject/qeksyctx.html