21 reduce() & reduceRight()
1.reduce()
对数组中的每个元素执行一个由你提供的reducer函数(升序执行),将其结果汇总为单个返回值。
语法:
arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
回调函数的参数:
参数 | 说明 |
---|---|
accumulator | 累计器回调的返回值,是上一次调用回调的累计值 |
currentValue | 当前元素(同forEach(),map()等方法) |
index | 当前元素索引 |
array | 被遍历的数组 |
initialValue | 初始值。默认是数组的第一个值 |
示例:
// 最基本使用
const arr = [1,2,3]
arr.reduce((accumulator,current,index,array)=>{
return accumulator + current
},0) // 6
// 累加数组对象中某个属性的值
const arr = [{x:2},{x:4},{x:6}]
arr.reduce((acc,cur)=>{
return acc + cur.x
},0) // 12
2.reduceRight()
与reduce()
不同在于,reduceRight()是从右到左遍历的。
示例:
const array1 = [[0, 1], [2, 3], [4, 5]].reduceRight(
(accumulator, currentValue) => accumulator.concat(currentValue)
)
array1 // [4, 5, 2, 3, 0, 1]
22 reverse()
reverse()
方法将数组中元素的位置颠倒,并返回该数组。
示例:
const arr = [1,2,3]
arr.reverse() // [3, 2, 1]
23 slice() & splice()
1.slice()
方法返回一个新数组。此数组是一个由begin和end决定的原数组的浅拷贝。原数组不被改变。
语法:
arr.slice([begin[, end]])
参数:
参数 | 说明 |
---|---|
begin | (可选)开始截取的索引 |
end | (可选)结束截取的索引 |
示例:
const arr = ['a','b','c','d']
arr.slice() // ['a', 'b', 'c', 'd']
arr.slice(2) // ['c', 'd']
arr.slice(2,3) // ['c']
2.splice()
方法与slice()
方法仅有一个字母的差别,所以这里放一起写。
splice()
方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。会改变原数组。返回被修改的元素
语法:
array.splice(start[, deleteCount[, item1[, item2[, ...]]]] )
参数:
参数 | 说明 |
---|---|
start | 指定修改的开始位置。(1)若大于数组长度,从数组末尾开始添加内容;(2)若是负数,从数组末位开始的第几位开始添加;(2)若负数绝对值大于数组的长度,从0开始 |
end | (可选)结束截取的索引 |
item1, item2, ... | 要添加的元素。若为空则只是删除元素 |
示例:
// 1 替换指定位置的元素
const arr = ['a','b','c','d']
arr.splice(2,1,'x') // 第二位开始删除一个元素,插入'x'
arr // ['a', 'b', 'x', 'd']
// 2 删除元素
arr.splice(2,1)
24 some()
some()
方法与every()
方法作用相反,some()方法用来判断某个数组中是否有一个以上的元素满足给定的条件。
25 sort()
sort()
方法方法用原地算法对数组的元素进行排序,并返回数组。默认排序顺序是在将元素转换为字符串,然后比较它们的UTF-16代码单元值序列时构建的。
由于它取决于具体实现,因此无法保证排序的时间和空间复杂性。
示例:
const arr = [3,2,5,1,6,4]
// 升序排列
arr.sort((a,b)=>{
return a-b
}) // [1, 2, 3, 4, 5, 6]
// 降序排列
arr.sort((a,b)=>{
return b-a
}) // [6, 5, 4, 3, 2, 1]
26 toLocaleString()
toLocaleString()
返回一个字符串表示数组中的元素。数组中的元素将使用各自的 toLocaleString
方法转成字符串,这些字符串将使用一个特定语言环境的字符串(例如一个逗号 ",")隔开。
27 toSource()
返回一个字符串,代表该数组的源代码.
**非标准:** 该特性是非标准的,请尽量不要在生产环境中使用它!
28 toString()
toString()
返回一个字符串,表示指定的数组及其元素。
示例:
const arr = ['a','b','c','d']
arr.toString() // 'a,b,c,d'