es6添加数组,es6中数组的新方法

  es6添加数组,es6中数组的新方法

  本教程运行环境:windows7系统,ECMAScript版本6,Dell G3电脑。

  

es6新增数组方法

  1、Array.from()

  Array.from方法用于将两种对象转换为实数组:

  类似数组的对象(类似数组的对象)

  可迭代对象(包括ES6的新数据结构集和映射)

  这意味着只要部署了迭代器接口的数据结构,Array.from就可以将其转换成数组。

  实际上,它可以用来转换DOM操作返回的NodeList集合和函数内部的arguments对象。

  当传递一个参数时,它用来把类数组变成一个实数组。

  阵列重复数据消除

  const arr=[1,2,3,3,2,5];

  console . log(array . from(new Set(arr)));//[1,2,3,5]

  //.也能达到同样的效果。

  Console.log ([.new set (arr)])//[1,2,3,5]对于没有部署此方法的浏览器,可以改用Array.prototype.slice方法。

  cosnt toArray=(()={

  数组. from?array . from:obj=[]. slice . call(obj)

  })()还可以接收第二个参数,传入一个函数实现类似map方法的效果,处理每个元素并返回处理后的数组。

  Array.from ([1,2,3],item=item * 2)//[2,4,6]返回字符串的长度。

  它可以用来把一个字符串变成一个数组,然后返回字符串的长度,因为它可以正确处理各种Unicode字符,从而避免了JS自己把大于/ufff的Unicode字符算作2个字符的bug。

  函数countLength(字符串){

  返回Array.from(字符串)。长度

  }2、Array.of()

  Array.of方法用于将一组值转换为数组。弥补数组构造函数Array()的不足。因为参数个数不同,Array()的行为也会不同。

  //下面的代码显示了不同之处

  (3)的数组;//[3]

  (3,11,8)的数组;//[3,11,8]

  新数组(3);//[,]

  新数组(3,11,8);//[3, 11, 8]

  //Array.of方法可以通过下面的代码模拟实现。

  函数ArrayOf() {

  return[]slice . call(参数);

  }3、数组实例的 find() 和 findIndex()

  find()

  返回第一个限定的数组成员,其参数是一个回调函数。所有数组成员依次执行这个函数,直到找到第一个符合条件的成员,然后返回这个成员。如果没有合格的成员,则返回undefined。

  该方法的回调函数接收三个参数:当前值、当前位置和原始数组。

  示例1

  [1,12,4,0,5].find ((item,index,arr)=returnitem1)//0示例2

  //find()

  var item=[1,4,-5,10]。find(n=n ^ 0);

  console . log(item);//-5

  //find也支持这种复杂的搜索。

  var点数=[

  {

  x: 10,

  y: 20

  },

  {

  x: 20,

  y: 30

  },

  {

  x: 30,

  y: 40

  },

  {

  x: 40,

  y: 50

  },

  {

  x: 50,

  y: 60

  }

  ];

  points.find(函数匹配器(点){

  返回point . x % 3==0 point . y % 4==0;

  });//{ x: 30,y: 40 }findIndex()

  用法基本上与find()方法相同,只是它返回第一个合格数组成员的位置,否则返回-1。

  示例1

  [1, 2, 4, 15, 0].FindIndex ((item,Index,arr)=returnitem10)//3示例2

  var点数=[

  {

  x: 10,

  y: 20

  },

  {

  x: 20,

  y: 30

  },

  {

  x: 30,

  y: 40

  },

  {

  x: 40,

  y: 50

  },

  {

  x: 50,

  y: 60

  }

  ];

  points.findIndex(函数匹配器(point) {

  返回point . x % 3==0 point . y % 4==0;

  });//2

  points.findIndex(函数匹配器(point) {

  返回point . x % 6==0 point . y % 7==0;

  });//14、数组实例的 fill()

  fill()方法使用给定的值,并填充一个数组。fill方法还可以接受第二个和第三个参数,这两个参数用于指定填充的开始位置和结束位置。//fill方法使用给定的值填充数组。

  var fillArray=新数组(6)。填充(1);

  console . log(fill array);//[1, 1, 1, 1, 1, 1]

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

  [a , b , c]。fill(7,1,2);

  //[a ,7, c]

  //注意,如果填充的类型是对象,那么分配的是具有相同内存地址的对象,而不是深度复制对象。

  设arr=新数组(3)。填充({

  姓名:“迈克”

  });

  arr[0]。name= Ben

  console . log(arr);

  //[{name: Ben},{name: Ben},{name: Ben}]这两种方法都可以在数组中找到NaN,但是ES5中的indexOf()却找不到NaN。

  5、数组实例的 entries(),keys() 和 values()

  这三个方法都用来遍历数组,并且都返回一个遍历对象,这个对象可以被for…of循环迭代。

  不同的是:

  Keys()是键名的遍历。

  Values()是键值的遍历。

  Entries()是键值对的遍历。

  for(设索引为[a , b]。keys()) {

  console.log(索引);

  }

  //0 1

  for (let elem of [a , b]。values()) {

  console . log(elem);

  }

  //a b

  for (let [index,elem] of [a , b]。entries()) {

  console.log(index,elem);

  }

  //0 a

  //1个“b”

  var a=[1,2,3];

  [.a . values()];//[1,2,3]

  [.a . keys()];//[0,1,2]

  [.a . entries()];//[ [0,1], [1,2], [2,3] ]6、includes()方法返回一个布尔值

  此方法返回一个布尔值,该值指示数组是否包含给定值。

  [1, 2, 3].包括(2) //true

  [(1, 2, 3)].包括(4) //false也可以接收第二个参数,表示搜索的起始位置。默认值为0。如果第二个参数为负,则表示数字的位置。如果第二个参数大于数组的长度,它从下标0开始。

  Includes方法弥补了indexOf方法语义性不够和误判NaN的缺点。

  【1,23,南】。includes(NaN)//真实兼容方法:

  函数包含=( ()={

  数组.原型.包含

  ?(arr,val)=arr.includes(val)

  :(arr,val)=arr . some(item=return item===val)

  })()7、数组实例的 flat(),flatMap()

  Flat()用于将嵌套数组“展平”成一维数组。此方法返回一个新数组,它对原始数据没有影响。传递参数意味着展平几层。默认情况下,flatMap()是一层。只能扩展一个层阵列。方法对原数组的每个成员执行一个函数(相当于执行Array.prototype.map()),然后对返回值组成的数组执行flat()方法。此方法返回一个新数组,而不改变原始数组//flat()

  [1, 2, [3, [4, 5]]].扁平()

  //[1, 2, 3, [4, 5]]

  [1, 2, [3, [4, 5]]].公寓(2)

  //[1, 2, 3, 4, 5]

  //平面图()

  [2, 3, 4].平面映射((x)=[x,x * 2])

  //执行//map后,是[[2,4],[3,6],[4,8]]

  //然后执行flat()方法得到如下结果。

  //[2, 4, 3, 6, 4, 8]

  //flatMap()只能展开一层数组。

  //相当于。扁平()

  [1, 2, 3, 4].平面图(x=[

  [x * 2]

  ])

  //执行//map后,是[[2]],[[4],[[6]],[[8]]]

  //然后在执行flat()方法后,您会得到以下结果

  //[[2],[4],[6],[8]]复制代码8、数组实例的copywithin()

  将指定位置的成员复制到当前数组中的其他位置,然后返回当前数组,将会更改原始数组。

  接收三个参数:

  1.目标(必需)从此位置替换数据。

  2.start(可选)从这个位置开始读取数据。默认值为0,如果为负,则表示位数。

  3.end(可选)在到达该位置之前停止读取数据,默认情况下,该位置等于数组长度。如果是负数,就表示到数。

  这三个参数都应该是数字,如果不是,它们将自动转换为数字。

  [1,2,3,4,5].copywithin(0,3);//[4,5,3,4,5]表示从下标3到末尾的成员(4,5),复制到下标0开始的位置,结果替换了原来的1和2[相关推荐:javascript视频教程,web前端]。以上是es6的新数组方法是什么的细节。请多关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: