js中数组基本方法 +数组扩展方法forEach、find、filter、reduce、map、flat

① arr.push()  —— 将1个或n个元素添加到数组的末尾,并返回新数组的length,会更改原数组

例:let arr = [1, 2, 3]

       let l = arr.push(4, 5)          // l = 新数组的长度5, arr = [1, 2, 3, 4, 5]

------------------------------------------------------------------------------------------------

② arr.pop()  —— 删除数组中的最后一个元素,并返回该元素的值

例:let arr = [1, 2, 3]

       let item = arr.pop()          // item  = 3, arr = [1, 2]

------------------------------------------------------------------------------------------------

③ arr.unshift()  —— 将1个或n个元素添加到数组的头部,并返回新数组的length,会更改原数组

例:let arr = [1, 2, 3]

       let l = arr.unshift(4, 5)          // l = 新数组的长度5, arr = [4, 5, 1, 2, 3]

------------------------------------------------------------------------------------------------

④ arr.shift()  —— 删除数组中的第一个元素,并返回该元素的值

例:let arr = [1, 2, 3]

       let item = arr.shift()          // item  = 1, arr = [2, 3]

------------------------------------------------------------------------------------------------

⑤ arr.slice(x, y)  —— 可以在数组中截取“部分数组”,并将截取到的“部分数组”放在一个新数组中返回,不会更改原数组

x: 截取开始位置的索引,被包含在截取范围内

y: 截取结束位置的索引,不被包含在截取范围内,截取到第y-1个元素

例:let arr = [1, 2, 3, 4, 5]

       let newArr = arr.slice(1, 3)          // newArr = [2, 3], arr = [1, 2, 3, 4, 5]

------------------------------------------------------------------------------------------------

⑥ arr.splice(x, y, z1, z2)  —— 可以在数组中删除/插入/替换数组元素,并将“被删除元素”放在一个新数组中返回,会更改原数组

x: 开始位置的索引

y: 删除的元素个数

z1、z2: 替换元素,会插入到开始位置索引x的后面(可不写,不写用于删除操作)

例:let arr = [1, 2, 3, 4, 5]

       let newArr = arr.splice(1, 3,'王小明')          // newArr = [2, 3, 4], arr = [1, 王小明, 5]

注:用于删除某个指定索引 index 元素  --> arr.splice(index, 1)

------------------------------------------------------------------------------------------------

⑦ arr.sort(sortBy)  —— 对数组中的元素进行排序,会更改原数组

sortBy: 非必填,函数类型参数,用于指定数组排序规则(常见的是指定升、降序排序)

例:arr.sort ( function(n1, n2) {     //如果结果值<0,n1排在前面;如果结果值=0,顺序不变;如果结果值>0,n2排在前面

   return (n1 - n2)      //  (n1 - n2)为升序排序,降序排序改为 (n2 - n1)

  })

注:如果不传入参数,则按首位的Unicode编码排序,用于Number型数据数组排序时,会发生排序错误。

例:let arr = [6, 12, 3, 9, 5]

       arr.sort()          //  [12, 3, 5, 6, 9]

------------------------------------------------------------------------------------------------

⑧ arr.join(separator) —— 把数组中的所有元素放入到一个字符串中,元素间按指定分隔符separator分隔

separator: 非必填,指定分隔数组元素的分隔符,不填时默认以‘ , ’分隔

------------------------------------------------------------------------------------------------

⑨ arr.reverse() —— 用于颠倒数组中元素的顺序。

------------------------------------------------------------------------------------------------

⑩ arr.contact(arrX, arrY)  —— 可以连接两个或多个数组会更改原数组

arrX, arrY: 将被连接的数组

------------------------------------------------------------------------------------------------

11. arr.forEach(func())  —— 遍历

例:let arr = [1, 2, 3, 4, 5]

  arr.forEach((item, index) => {

  console.log( '第' + index + '个元素是:' + item)

  })  

------------------------------------------------------------------------------------------------

12. arr.map(func())  —— 映射,可用于一一对应更改数组元素,并返回新数组

例:let arr = [1, 2, 3, 4, 5]

  let newArr = arr.map(item => item + 1)     // newArr = [2, 3, 4, 5, 6]

------------------------------------------------------------------------------------------------

13. arr.filter(func())  —— 过滤, 并返回满足条件元素的新数组,不会更改原数组

例:let arr = [1, 2, 3, 4, 5]

  let newArr = arr.filter(item => item > 3)     // newArr = [4, 5]

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

ES6中数组的扩展方法:

1) arr.find(func())  —— 找出数组中第一个复合条件的元素,并返回该元素

例:let arr = [

    {id= 1, name="哈利波特"}

    {id= 2, name="指环王"}

  ]

       let target = arr.find(item => item.id == 2)          // 获取id为2的元素

------------------------------------------------------------------------------------------------

2) arr.findIndex()  —— 找出数组中第一个复合条件的元素,并返回该元素的索引值

例:let arr = [

    {id= 1, name="哈利波特"}

    {id= 2, name="指环王"}

  ]

       let target = arr.find(item => item.id == 2)          // 获取id为2的元素的索引值

------------------------------------------------------------------------------------------------

3) arr.includes(item)  —— 判断数组中是否包含某个元素,并返回布尔值

例:let arr = [1, 2, 3, 4, 5]

  arr.includes(3)     //true

  arr.includes(10)     //false

------------------------------------------------------------------------------------------------

4) arr.reduce(func(), initValue)  —— 累加器,可用于求和、求平均数等,但不局限于单纯Number类型的累加

例:let arr = [1, 2, 3, 4, 5]

  let target = arr.reduce((preValue, item, index) => {

   if(index == arr.length){

          return preValue
   } else {
          return preValue += item
   }

  }, 0)               //preValue的初始值=0

       //用于求和, target = 15。

------------------------------------------------------------------------------------------------

5) arr.flat(num)  —— 数组扁平化,将嵌套数组拉平一维数组

例:[1, 2, [2, 2] ].flat()  //默认只拉平一层

  [1, 2, [2, [4], 2] ].flat(2)    //拉平两层

  [1, 2, [2, [4], 2] ].flat(Infinity)    //无论多少层嵌套,全部拉平

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

posted @ 2020-05-18 19:01  xuwennn  阅读(449)  评论(0)    收藏  举报