(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 原数组)
- 回调函数接收4个参数:
- 一个初始值 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()从数组的末尾向前将数组中的数组项做累加。