Array API—02

(11)indexOf() & lastIndexOf()

①indexOf() 方法可返回数组中某个指定的元素位置。

该方法将从头到尾地检索数组,看它是否含有对应的元素。开始检索的位置在数组 start 处或数组的开头(没有指定 start 参数时)。如果找到一个 item,则返回 item 的第一次出现的位置。开始位置的索引为 0。

如果在数组中没找到指定元素则返回 -1。

1 let arr = [1,2,3]
2 let i = arr.indexOf(2)
3 console.log(i);  // 1

 它还有第二个参数,表示开始查找的位置

②lastIndexOf() 方法可返回一个指定的元素在数组中最后出现的位置,从该字符串的后面向前查找。

该方法将从尾到头地检索数组中指定元素 item。开始检索的位置在数组的 start 处或数组的结尾(没有指定 start 参数时)。如果找到一个 item,则返回 item 从尾向前检索第一个次出现在数组的位置。数组的索引开始位置是从 0 开始的。

用法同上,这里不再写示例

(12)join()

join() 方法用于把数组中的所有元素放入一个字符串。

1 let arr = [1,2,3]
2 let str = arr.join('-')
3 console.log(str);  // 1-2-3

说明:

  • 分隔符不写则默认是英文逗号

(13)map()

map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

map() 方法按照原始数组元素顺序依次处理元素。

注意: 

  • map() 不会对空数组进行检测。
  • map() 不会改变原始数组。
1 let arr = [1,2,3]
2 let newArr = arr.map((e,i,a)=>{
3     return e*e
4 })
5 console.log(newArr);  // [1,4,9]

 说明:

  • 回调的三个参数分别是:当前遍历的元素、当前元素的索引、原数组

(14)pop() & push() & shift() & unshift()

①pop() 方法用于删除数组的最后一个元素并返回删除的元素。

注意:此方法改变数组的长度!

1 let arr = [1,2,3,4]
2 let e = arr.pop()
3 console.log(e);  // 4
4 console.log(arr);  // [1,2,3]

②push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度。

注意: 新元素将添加在数组的末尾。

注意: 此方法改变数组的长度。

1 let arr = [1,2,3]
2 arr.push(4)
3 console.log(arr);  // [1, 2, 3, 4]
4 arr.push(7,8)
5 console.log(arr);  // [1, 2, 3, 4, 7, 8]

③shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。

1 let arr = [1,2,3]
2 arr.shift()
3 console.log(arr);  // [2, 3]

④unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。

1 let arr = [1,2,3]
2 arr.unshift(4) 
3 console.log(arr);  // [4, 1, 2, 3]

(15)slice()

slice() 方法可从已有的数组中返回选定的元素。原数组不受影响

array.slice(start, end)
  • start:
    • 可选。规定从何处开始选取。
    • 如果是负数,那么它规定从数组尾部开始算起的位置。
    • 如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取,slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。
  • end:
    • 可选。规定从何处结束选取。
    • 该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。
    • 如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。 slice(-2,-1) 表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。

说明:

  • 如果两个参数都不传,则相当于把原数组复制了一份(浅复制,如果包含引用类型的元素,那么复制的是地址,修改一份,另一份也会随之改变)

(16)splice()

splice() 方法用于添加或删除数组中的元素

注意:这种方法会改变原始数组。

array.splice(index,howmany,item1,.....,itemX)

参数:

  • index:开始插入/删除的索引
  • howmany:需要删除的元素长度,0表示添加
  • item...:希望添加的元素。这里可以配合ES6的结构来使用(...)
1 let arr = [1,2,3,4,5]
2 arr.splice(2,1,30)  // [1, 2, 30, 4, 5]  替换元素
3 arr.splice(2,0,30)  // [1, 2, 30, 3, 4, 5]  添加元素到指定位置

 (17)sort()

sort() 方法用于对数组的元素进行排序。

sort()内的参数可选。规定排序顺序。必须是函数。

1       let arr = [3,5,4,8]
2       arr.sort()
3       console.log(arr);  // [3, 4, 5, 8]

 (18)toLocaleString() & toString()

toLocaleString() 把数组转为字符串:

1       let arr = [1,2,3,4]
2       console.log(arr.toLocaleString());  // 1,2,3,4

两者的作用在绝大多数情况下是相同的

 (19)reduce() & reduceRight()

①reduce()方法对数组中的每个元素执行一个提供的回调,将其结果汇总为单个返回值。

reduce函数接收两个参数:

  • 一个回调callback
    • 回调函数接收4个参数:
      • Accumulator( acc 累计器)
      • Current Value(cur 当前值)
      • Current Index(idx 当前索引)
      • Source Array(arr 原数组)
  • 一个初始值 initialValue:累加会从这个初始值开始

 语法:

arr.reduce(callback(accumulator, currentValue[, currentIndex[, arr]])[, initialValue])
arr.reduce(callback(accumulator, currentValue, currentIndex, arr), initialValue)

 简单使用:

    let a = [1, 2, 3, 4]

    let s1 =a.reduce((acc,cur,idx,arr)=>{
        return acc + cv
    },0)

    let s2 =a.reduce((acc,cur,idx,arr)=>{
        return acc + cv
    },5)

    console.log(s1);  // 10
    console.log(s2);  // 15

说明:

  • reduce里面不局限于使用+号来累加。比如可以换成*来实现乘法
  • reduce()对于空数组是不会执行回调函数的

②reduceRight()

reduceRight()方法的功能和reduce()是一样的,不同的是reduceRight()从数组的末尾向前将数组中的数组项做累加。

原文地址:https://www.cnblogs.com/codexlx/p/14309591.html