Array-apis(21-27)

96 阅读3分钟

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'