码迷,mamicode.com
首页 > 编程语言 > 详细

数组的扩展

时间:2016-05-21 15:50:19      阅读:261      评论:0      收藏:0      [点我收藏+]

标签:

一、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循环也会遍历空位。

数组的扩展

标签:

原文地址:http://www.cnblogs.com/realsoul/p/5514675.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!