• 数组的扩展


    一、Array.from()

      1、用于将两类对象转为真正的数组,类似数组的对象(array-like object)和可遍历(iterable)的对象(包括ES6新增的数据结构Set和Map)。

      2、length属性一定要有

      3、常见的类似数组的对象是DOM操作返回的NodeList集合,以及函数内部的arguments对象

      4、只要是部署了Iterator接口的数据结构,Array.from都能将其转为数组。

      5、如果参数是一个真正的数组,Array.from会返回一个一模一样的新数组。

    二、Array.of()方法

      1、Array.of方法用于将一组值,转换为数组。

      2、对Array构造方法的补充    //主要针对一个参数的产生的歧义  new Array(a);表示创建一个数组长度为a的新数组  new Array(a,b)表示创建数[a,b]

      3、Array.of总是返回参数值组成的数组。如果没有参数,就返回一个空数组。

      4、Array.of方法可以用下面的代码模拟实现。

    function ArrayOf(){
      return [].slice.call(arguments);
    }

    三、数组实例的copyWithin()

      1、数组实例的copyWithin方法,在当前数组内部,将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组。也就是说,使用这个方法,会修改当前数组。

      2、Array.prototype.copyWithin(target, start = 0, end = this.length)

      3、它接受三个参数。这三个参数都应该是数值,如果不是,会自动转为数值。

    • target(必需):从该位置开始替换数据。
    • start(可选):从该位置开始读取数据,默认为0。如果为负值,表示倒数。
    • end(可选):到该位置前停止读取数据,默认等于数组长度。如果为负值,表示倒数。

      4、简单说就是将使用原数组的元素对原数组进行修改

    四、数组实例的find()和findIndex()   //分别返回value 和 index

      1、数组实例的find方法,用于找出第一个符合条件的数组成员。    //find(value,index,arr)  参数依次为当前值,当前下标,原数组;返回值是value

      2、它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员。如果没有符合条件的成员,则返回undefined

      3、数组实例的findIndex方法的用法与find方法非常类似,返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1

      4、这两个方法都可以接受第二个参数,用来绑定回调函数的this对象。

      5、另外,这两个方法都可以发现NaN,弥补了数组的IndexOf方法的不足。

    五、数组实例的fill方法()

      1、fill方法使用给定值,填充一个数组

      2、fill方法还可以接受第二个和第三个参数,用于指定填充的起始位置和结束位置。

    六、数组实例的entries(),keys()和values()     //values有待研究

      1、用于遍历数组。它们都返回一个遍历器对象,可以用for...of循环进行遍历

      2、keys()是对键名的遍历、values()是对键值的遍历,entries()是对键值对的遍历。

    七、数组实例的includes()

      1、Array.prototype.includes方法返回一个布尔值,表示某个数组是否包含给定的值,与字符串的includes方法类似。该方法属于ES7,但Babel转码器已经支持。

    七、数组实例的includes()

      1、Array.prototype.includes方法返回一个布尔值,表示某个数组是否包含给定的值,与字符串的includes方法类似。该方法属于ES7,但Babel转码器已经支持。

      2、该方法的第二个参数表示搜索的起始位置,默认为0。如果第二个参数为负数,则表示倒数的位置,如果这时它大于数组长度(比如第二个参数为-4,但数组长度为3),则会重置为从0开始。

      3、没有该方法之前,我们通常使用数组的indexOf方法,检查是否包含某个值。indexOf方法有两个缺点,一是不够语义化,它的含义是找到参数值的第一个出现位置,所以要去比较是否不等于-1,表达起来不够直观。二是,它内部使用严格相当运算符(===)进行判断,这会导致对NaN的误判。

    八、数组的空位

      1、数组的空位指,数组的某一个位置没有任何值。比如,Array构造函数返回的数组都是空位。

      2、注意,空位不是undefined,一个位置的值等于undefined,依然是有值的。空位是没有任何值,in运算符可以说明这一点。

      3、ES5对空位的处理,大多数情况下会忽略空位:

    • forEach(), filter(), every()some()都会跳过空位。
    • map()会跳过空位,但会保留这个值
    • join()toString()会将空位视为undefined,而undefinednull会被处理成空字符串。

      4、ES6则是明确将空位转为undefined

      5、Array.from方法会将数组的空位,转为undefined,也就是说,这个方法不会忽略空位。

      6、扩展运算符(...)也会将空位转为undefined

      7、copyWithin()会连空位一起拷贝。

      8、fill()会将空位视为正常的数组位置。

      9、for...of循环也会遍历空位。

    All rights reserved please indicate the source if reprint---吓尿了的大肥鼠
  • 相关阅读:
    Oracle ref cursor和sys_refcursor
    一些命令可以帮您了解Linux 操作系统用户信息
    Linux 6上使用UDEV绑定共享存储
    Oracle VirtualBox 问题汇总
    Linux 常用操作
    CentOS 7 运行级别切换
    Oracle 更新Opatch、打补丁
    django rest framework restful 规范
    CBV FBV rest framework
    CRM
  • 原文地址:https://www.cnblogs.com/realsoul/p/5514675.html
Copyright © 2020-2023  润新知