es6数组常用的四种方法,es6数组的新方法

  es6数组常用的四种方法,es6数组的新方法

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

  

传统Array 对象方法

   toSource()返回该对象的源代码。String()将数组转换为字符串并返回结果。ToLocaleString()将数组转换为局部数组并返回结果。Value()返回数组对象的原始值。修改原始数组不会修改原始数组。push,popconcatunshift,ShiftJoinSortsLicenseVerseindexof(),Lasdexof()SpliceForeacheCopywithMapFillFilter Some Every Reduce,reduceRight包含finde,findIndex entries(),keys(),values()

修改原数组

   push()将一个或多个元素添加到数组末尾并返回新的长度。Unshift()将一个或多个元素添加到数组的开头,并返回新的长度。Pop()删除并返回数组的最后一个元素shift()删除并返回数组的第一个元素sort()对数组的元素进行排序reverse()反转数组中元素的顺序。Splice()删除元素并将新元素添加到数组中。splice

  语法

  arrayObject.splice(索引,数量,项目1,itemX)

  var arr=new Array();

  arr[0]=乔治;

  arr[1]=约翰;

  arr[2]=托马斯;

  排列拼接(2,1);//乔治,约翰

  arr.splice(1,0,威廉);//乔治,威廉,约翰

  arr.splice(2,1,哈哈);//George , William ,哈哈

不修改原数组

  Concat()连接两个或多个数组并返回结果。Join()将数组的所有元素放入一个字符串中。元素由指定的分隔符分隔。Slice()从现有数组中返回选定的元素slice

  语法

  arrayObject.slice(start,end);

  需要开始。指定开始选择的位置。可以是负数,从数组末尾开始计数。End可选。指定结束选择的位置。如果未指定,拆分数组包含从数组开头到结尾的所有元素。可以是负数,从数组末尾开始计数。var arr=new Array();

  arr[0]=乔治;

  arr[1]=约翰;

  arr[2]=托马斯;

  arr.slice(2,1);//[]

  arr.slice(1,2);//威廉

  arr.slice(-2,-1);//William

ES5新增数组

  索引方法:indexOf(),lastIndexOf()迭代方法:forEach(),map(),filter(),some(),every()合并方法:reduce(),reduceRight()索引方法

  indexOf

  Array.indexof (searchelement [,fromindex])返回一个整数索引值,如果不匹配(完全匹配),则返回-1。FromIndex是可选的,这意味着从这个位置开始搜索。如果默认值或格式不符合要求,则使用默认值0。var数据=[2,5,7,3,5];

  console.log(data.indexOf(5, x ));//1 (x 被忽略)

  console.log(data.indexOf(5, 3 ));//4(从第3位开始搜索)lastIndexOf

  array . lastindexof(search element[,fromindex])从字符串的末尾开始搜索,而不是从开头。fromIndex的默认值是array.length-1。var数据=[2,5,7,3,5];

  console . log(data . lastindexof(5));//4

  console.log(data.lastIndexOf(5,3));//1(从后向前,索引值小于3时开始搜索)

  console . log(data . lastindexof(4));//-1(未找到)迭代方法

  每个方法接受两个参数,第一个参数callback(必需的回调函数),第二个参数是可选的上下文参数。

  第一个参数回调接受三个参数:当前项的值、当前项在数组中的索引以及数组对象本身。即函数(value,index,arr){ };需要注意的是,第一个参数和第二个参数即索引和值的顺序与我们常用的jQuery中封装的方法相反。第二个参数是可选的上下文参数,是执行第一个函数参数的作用域对象,也就是上面提到的回调中this指向的值。如果没有指定第二个可选参数,将使用全局对象(浏览器中的窗口),甚至在严格模式下未定义。需要注意的是,除了forEach()方法,其他迭代方法中的回调都需要有返回值,否则会返回undefined。

  forEach

  ForEach()循环遍历数组,并对数组中的每一项运行给定的函数。此方法没有返回值。

  [].forEach(函数(值,索引,数组){

  //.

  },[this object]);除了必需的回调函数参数,forEach还可以接受可选的上下文参数(在回调函数中更改this point)(第二个参数)。如果没有指定第二个可选参数,将使用全局对象(浏览器中的窗口),甚至在严格模式下也没有定义。[1,2,3,4].foreach(函数(项,索引,数组){

  console . log(array[index]==item);//真

  总和=项目;

  });

  警报(总和);//10

  var数据库={

  用户:[张含韵,江,李小璐],

  sendEmail:函数(用户){

  if (this.isValidUser(user)) {

  Console.log (Hello, user);

  }否则{

  Console.log(对不起,用户,你不是家庭成员);

  }

  },

  isValidUser:函数(用户){

  返回/^表/。测试(用户);

  }

  };

  //给大家发邮件。

  数据库的遍历。users.foreach (//database.users)

  Database.sendEmail,//发送邮件

  数据库//使用数据库代替上面用红色标记的数据库

  );

  //结果:

  //你好,张含韵

  //对不起,江,你不是顾家的人。

  //对不起,李小璐,你不是map的。

  Map()指的是“映射”,它对数组中的每一项运行一个给定的函数,并返回一个由每个函数调用的结果组成的数组。

  [].map(函数(值,索引,数组){

  //.

  },[this object]);var数据=[1,2,3,4];

  var arrayOfSquares=data . map(function(item){

  退货项目*项目;

  });

  alert(arrayOfSquares);//1, 4, 9, 16filter

  Filter(),“filter”,对数组中的每一项运行给定的函数,返回满足过滤条件的数组。

  array.filter(回调,[this object]);false的回调函数需要返回一个布尔值true或false。只要返回值弱等于==true/false就ok,而不是非要返回===true/false。var arr3=[1,2,3,4,5,6,7,8,9,10];

  var flag=arr 3 . filter(function(value,index) {

  返回值% 3===0;

  });

  console . log(flag);//[3, 6, 9]every

  Every(),判断数组中的每一项是否满足给定的条件,只有当所有项都满足条件时才会返回true。注意: 空数组,则返回true

  array.every(回调,[this object]);

  var arr4=[1,2,3,4,5];

  var flag=arr 4 . every(function(value,index) {

  返回值% 2===0;

  });

  console . log(flag);//falsesome

  Some(),确定数组中是否有满足条件的项。只要有一项满足条件,就返回true。注意: 空数组,则返回false

  array.some(回调,[this object]);

  var arr5=[1,2,3,4,5];

  var flag=arr 5 . some(function(value,index) {

  返回值% 2===0;

  });

  console . log(flag);//真归并方法

  这两种方法可能比以前稍微复杂一些。它们都遍历数组中的所有项,然后生成一个最终返回值。这两个方法接收两个参数。

  第一个参数回调,函数接受四个参数,分别是(初始值total必选,currentValue Current Value必选,索引值currentIndex可选,当前数组arr可选)。该函数需要返回值,该值将在下一次迭代中用作初始值。第二个参数是迭代的initialValue,这是可选的。如果是默认值,初始值是数组中的第一项,它是从数组中的第一项叠加而来的。默认参数比正常的值传递少需要一次操作。reduce

  reduce()方法接收一个函数作为累加器,数组中的每个值(从左到右)开始递减,最后计算为一个值。Reduce()不会对空数组执行回调函数。

  数组。reduce(function(total,currentValue,currentIndex,array) {

  //.

  });

  var arr9=[1,2,3,4];

  var sum 9=arr 9 . reduce(function(total,curr,index,array) {

  返回总计*货币;

  });

  console . log(sum 9);//24

  var sum 9 _ 1=arr 9 . reduce(function(total,curr,index,array) {

  返回总计*货币;

  }, 10);

  console . log(sum 9 _ 1);//240reduceRight

  与reduce()相比,reducereight()的用法类似,但区别在于reducereight是从数组的末尾实现的。

  array.reduceRight(回调,[this object]);

  var arr9=[2,45,30,80];

  var flag=arr 9 . reduce right(function(total,curr,index) {

  返回总计-货币;

  });

  var flag _ 1=arr 9 . reduce right(function(total,curr,index) {

  返回总计-货币;

  },200);

  console . log(flag);//3

  console . log(flag _ 1);//43Array方法

  isArray

  确定参数是否为“数组”并返回true或false。

  var a=[1,2,3];

  array . isarray(a);//true

ES6数组方法

  Array方法

  Array.from()

  用于将两种对象转换成真正的数组:类数组对象和可迭代对象(包括ES6的新数据结构集和映射)。

  让arrayLike={

  0: a ,

  1: b ,

  2: c ,

  长度:3

  };

  设arr 2=array . from(arrayLike);//[a , b , c]Array.from也可以接受第二个参数,其作用类似于数组的map方法,用于处理每个元素,并将处理后的值放入返回的数组中。

  Array.from(arrayLike,x=x * x);

  //相当于

  Array.from(arrayLike)。map(x=x * x);

  Array.from([1,2,3],(x)=x * x)

  //[1, 4, 9]Array.of()

  用于将一组值转换为数组。

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

  (3) //[3]实例方法的数组

  会改变原数组

  copyWithin()

  在当前数组内,将指定位置的成员复制到其他位置(原始成员将被覆盖),然后返回当前数组。

  数组。copyWithin(target,start=0,end=this . length);Target(必需):替换此位置的数据。如果是负数,则表示倒数。Start(可选):从该位置开始读取数据,默认为0。如果是负数,则表示倒数。End(可选):在到达该位置之前停止读取数据,默认情况下该位置等于数组长度。如果是负数,则表示倒数。//将位3复制到位0

  [1, 2, 3, 4, 5].copyWithin(0,3,4)

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

  //-2相当于位置3,-1相当于位置4。

  [1, 2, 3, 4, 5].copyWithin(0,-2,-1)

  //[4,2,3,4,5]fill()

  用给定值填充数组。

  [a , b , c]。填充(7);//[7, 7, 7]

  设arr=新数组(3)。填充([]);

  arr[0]。推(5);//[[5], [5], [5]]不会改变原数组

  查找()

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

  find方法的回调函数可以接受三个参数,即当前值、当前位置和原始数组。

  [1, 4, -5, 10].查找((n)=n 0)

  //-5

  [1, 5, 10, 15].find(function(value,index,arr) {

  返回值9;

  }) //10findIndex()

  findIndex方法与find方法非常相似,因为它返回满足条件的第一个数组成员的位置,如果所有成员都不满足条件,则返回-1。

  [1, 5, 10, 15].findIndex(function(value,Index,arr) {

  返回值9;

  })//2包含()

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

  [1,2,3].包括(2)//trueentries()、键()和值()

  ES6提供了三个新方法:entries()、keys()和values()来遍历数组。它们都返回一个遍历对象,可由for遍历.循环的。唯一的区别是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 如果不使用for.循环中,可以手动调用遍历对象的next方法来遍历。

  let letter=[a , b , c ];

  let entries=letter . entries();

  console.log(entries.next()。值);//[0, a]

  console.log(entries.next()。值);//[1, b]

  console.log(entries.next()。值);//[2, c]【推荐学习:javascript高级教程】以上是es6数组方法有哪些的详细介绍。更多请关注我们的其他相关文章!

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

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