上一篇文章小编简单介绍了在ES6中,一些常用的方法和一些简单的应用,在这篇文章中,小编将针对ES6中数组常用方法进行扩展,相信经过这篇文章之后,每一位小伙伴下班时间会有所提前,就算从原来的996变成995.9也好。大家也可以关注我的微信公众号,蜗牛全栈。

一、伪数组/类数组:不是真正意义上的数组,含有length属性,不具有数组的方法

let oDiv = document.getElementsByTagName("div")
console.log(oDiv); // HTMLCollection let oDiv2 = document.getElementsByClassName("xx")
console.log(oDiv2); // HTMLCollection let oDiv3 = document.querySelectorAll(".xx")
console.log(oDiv3); // NodeList console.log(oDiv3 instanceof Array); // false
// Uncaught TypeError: oDiv3.push is not a function
// 因为oDiv3不是真正意义上的数组,不能调用数组的push方法
oDiv3.push(123) function foo(){
console.log(arguments) // Arguments(3) [1, "666", true, callee: ƒ, Symbol(Symbol.iterator): ƒ]
console.log(arguments instanceof Array) // false
}
foo(1,"666",true)

二、将类数组/伪数组转换为数组

1、es5

let oDiv3 = document.querySelectorAll(".xx")
let arr = Array.prototype.slice.call(oDiv3)
console.log(arr) // 此时arr已经是真正数组,具有push方法
arr.push(123)
console.log(arr) // [123]

2、es6

let arrLike = {
0:"es6",
1:"es7",
2:"es8",
length:3
}
let arr = Array.from(arrLike)
console.log(arr) // ["es6", "es7", "es8"]
console.log(arr instanceof Array) // true
arr.push("es9")
console.log(arr) // ["es6", "es7", "es8", "es9"]

三、Array.of

let arr = new Array(1,2)
console.log(arr) // [1, 2]
let arr = new Array(3) // 传递一个参数的时候,表示的是数组的个数
console.log(arr) // [empty × 3]
// 实现传递一个参数的时候,直接将该参数作为数组的元素
let arr = Array.of(1,2)
console.log(arr) // [1, 2]
let arr = Array.of(3)
console.log(arr) // [3]
// 将很多种元素组装成数组
let arr = Array.of(1,true,"666",[1,2,3],{
name:"lilei"
})
console.log(arr) // 见图片 也就是说这个函数可以把一堆内容组装成一个数组

四、copyWithin:替换数组内元素(个人感觉后面介绍的fill方法更容易理解)

let arr = [1,2,3,4,5]
// 第一个参数 从哪个位置开始替换【必须】
// 第一个参数 从指定位置开始读取元素【非必须】
// 第三个参数,到指定位置位置停止读取元素【非必须】默认到最后
let res = arr.copyWithin(1,3,4)
console.log(res) // [1,4,3,4,5]

五、fill:填充数组默认值/替换数组内容

1、填充数组默认值

let arr = new Array(3)
arr.fill(7)
console.log(arr) // [7,7,7]

2、替换数组内容

let arr = [1,2,3,4,5]
// 第一个参数表示用指定内容替换成特定内容
// 第二个参数表示从指定位置开始
// 第三个参数表示到指定位置结束
// 如果只传递第一个参数,则将数组内全部替换成指定内容
arr.fill("666",1,3)
console.log(arr) // [1, "666", "666", 4, 5]

六、includes

1、es5中判断数组中是否含有某个对象方法。存在的时候会返回对应元素的index,不存在会返回-1。PS:可以类比小编上一篇文章中提到的find和findIndex

// NaN可以理解成Not A Number 例如在运算中 5-"a" 会返回NaN
let arr = [1,2,3,NaN]
console.log(arr.indexOf(2)) // 1
console.log(arr.indexOf(NaN)) // -1 // indexOf 不能检测NaN
console.log(NaN == NaN) // false 在js中NaN不一样

2、includes数组中存在时候,返回true,否则返回false,可以检测NaN是否在数组中。

let arr = [1,2,3,NaN]
console.log(arr.includes(2)) // true
console.log(arr.includes(NaN)) // true // includes 能检测NaN

ES6中的数组方法扩展的更多相关文章

  1. ES6中对数组的扩展

    hello,大家好,我又来了.         前面讲了字符串和数值的扩展,今天要讲的是:数组的扩展.不知道大家能否跟得上这个节奏,你们在阅读中对讲解有存在疑惑,记得留言提出来,要真正地理解,否则白白 ...

  2. ES6中Object.assign() 方法

    ES6中Object.assign() 方法 1. 对象合并Object.assign 方法用于对象的合并,将源对象(source)的所有可枚举属性,复制到目标对象上.如下代码演示: var targ ...

  3. JavaScript(ES6之前)数组方法总结

    一.数组的创建 1.使用 Array 构造函数 var arr1 = new Array(); // 创建一个空数组 var arr2 = new Array(20); // 创建一个包含20项的数组 ...

  4. ES6中的数组

    数组是js中很重要的数据类型,虽然在 ES5 中,关于数组的方法和属性很多.但为了更加简洁.高效的操作数组,ES6 中又在数组原型上和实例上新增了一些方法. 一.Array方法 1.1 Array.f ...

  5. ES6中的数组常用方法

    数组在JS中虽然没有函数地位那么高,但是也有着举足轻重的地位,下面我就结合这ES5中的一些常用的方法,与ES6中的一些方法做一些说明和实际用途.大家也可以关注我的微信公众号,蜗牛全栈. 一.ES5中数 ...

  6. 《JS权威指南学习总结--7.9 ES5中的数组方法》

    内容要点: ES5中定义了9个新的数组方法来遍历.映射.过滤.检测.简化和搜索数组. 概述:首先,大多数方法的第一个参数接收一个函数,并且对数组的每个元素(或一个元素)调用一次该函数. 如果是稀疏数组 ...

  7. ES6(三)数组的扩展

    1.Array.form ES6中,Array.from = function(items,mapfn,thisArg) {  }   Array.from 用于将 类数组 和 可遍历对象(实现了It ...

  8. ES6中对函数的扩展

    ES6一路扩展,字符串.数组.数值.对象无一“幸免”,ES6说要雨露均沾,函数也不能落下,今天,就来讲解ES6对函数的扩展. 参数的默认值 在开发中,给函数的参数指定默认值,是很普遍很常见的一个需求, ...

  9. ES6中对数值的扩展

    上一节和大家学习了字符串的扩展,这一节轮到了数值,我们一起来学习数值的扩展. 剧透一下,这一节并不会很烧脑,都是介绍类的知识讲解,理解性的东西不多,初学者们也可以愉快地看完. 传统的写法 在介绍数值的 ...

随机推荐

  1. poj2175费用流消圈算法

    题意:      有n个建筑,每个建筑有ai个人,有m个避难所,每个避难所的容量是bi,ai到bi的费用是|x1-x2|+|y1-y2|+1,然后给你一个n*m的矩阵,表示当前方案,问当前避难方案是否 ...

  2. 还在一个模块打天下嘛?你知道引入Jetpack架构后,你的App会发生哪些奇妙的变化吗?

    前言 上篇文章我给大家分享了我对Android架构的理解,从思想层面去讲述架构的演进过程.很多小伙伴读完后拍手叫好,表示还想听我讲一下对Jetpack 架构的看法,本着帮人帮到底的精神,今天我将再次动 ...

  3. C#/VB.NET 自定义动画路径

    PPT中的动画效果可分为已有内置动画以及自定义动画.设置内置动画,只需直接指定动画效果类型即可.本文主要介绍如何实现自定义动画,即自定义形状动作线性路径.附C#及VB.NET代码供参考. 程序运行环境 ...

  4. 『动善时』JMeter基础 — 8、JMeter主要元件介绍

    目录 1.测试计划(Test Plan) 2.线程组 3.取样器(sampler) 4.逻辑控制器(Logic Controller) 5.配置元件(Config Element) 6.定时器(Tim ...

  5. linux中定时运行php(每分钟执行一次为例)

    注:使用Crontab定时执行php脚本文件 1. 安装crontab yum install crontabs 说明:/sbin/service crond start //启动服务/sbin/se ...

  6. 死磕Spring之AOP篇 - Spring 事务详解

    该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读. Spring 版本:5.1 ...

  7. java面试一日一题:如何判断一个对象是否为垃圾对象

    问题:请讲下在java中如何判断一个对象是否为垃圾 分析:该问题主要考察对java中的垃圾回收,用什么方式去识别一个对象是垃圾: 回答要点: 主要从以下几点去考虑, 1.GC回收的是什么,回收发生在内 ...

  8. FileInfo & DirectoryInfo

    这节讲两个实例类,FileInfo和DirectoryInfo两个类,用于操作某个具体的文件或者目录. FileInfo:     FileInfo不同于File,它是一个实例类,有一个string类 ...

  9. API网关才是大势所趋?SpringCloud Gateway保姆级入门教程

    什么是微服务网关 SpringCloud Gateway是Spring全家桶中一个比较新的项目,Spring社区是这么介绍它的: 该项目借助Spring WebFlux的能力,打造了一个API网关.旨 ...

  10. 如何更好理解Peterson算法?

    如何更好理解Peterson算法? 1 Peterson算法提出的背景 在我们讲述Peterson算法之间,我们先了解一下Peterson算法提出前的背景(即:在这个算法提出之前,前人们都做了哪些工作 ...