数组的变异方法与非变异方法
变异方法会直接修改原数组,非变异方法则不会
变异方法:
1. push() 在数组末尾添加一个或多个元素,返回新数组的长度
let arr = [1,2,3] console.log('result', arr.push(4)) // result 4
2. pop() 移除数组的最后一个元素,返回被移除的元素
let arr = [1,2,3] console.log('result', arr.pop()) // result 3
3. shift() 移除数组的第一个元素,返回被移除的元素
let arr = [1,2,3] console.log('result', arr.shift()) // result 1
4. unshift() 在数组开头添加一个或多个元素,返回新数组的长度
let arr = [1,2,3] console.log('result', arr.unshift(0)) // result 4
5. splice() 从指定位置删除或添加元素,返回被删除的元素组成的数组
let arr = [1,2,3] console.log('result', arr.splice(1,1)) // 从索引1开始删除1个元素 // result [2] console.log('result1', arr.splice(1,2,4,5)) // 从索引1开始删除2个元素,并插入4,5 // result1 [2,3]
6. sort() 对数组元素进行排序,默认按字符串Unicode码点排序
let arr = [13, 5, 8] console.log('result', arr.sort((a,b) => a - b)) // 从小到大排列 result [5,8,13] console.log('result', arr.sort((a,b) => b - a)) // 从大到小排列 result [13,8,5]
7. reverse() 反转数组元素的顺序
let arr = [1,2,3] console.log('result', arr.reverse()) // result [3,2,1]
非变异方法:
1. concat() 合并两个或多个数组,返回一个新数组
let arr = [1,2,3] let arr2 = [4,5,6] console.log('result', arr.concat(arr2)) // result [1,2,3,4,5,6]
2. slice() 切片,返回数组的某一部分(浅拷贝),不改变原数组
let arr = [1,2,3] console.log('result', arr.slice(1,2)) // 从索引1切到索引2 result [2]
3. join() 将数组元素连接成一个字符串,返回字符串
let arr = [1,2,3] console.log('result', arr.join('?')) // 使用?连接成字符串 result 1?2?3
4. toString() 将数组转换为字符串,返回字符串
let arr = [1,2,3] console.log('result', arr.toString()) // result 1,2,3
5. map() 对数组的每个元素执行回调函数,返回一个新数组
let arr = [1,2,3] console.log('result',arr.map(item => item * 2)) // result [2,4,6]
6. forEach() 对数组的每个元素执行回调函数,无返回值
let arr = [1,2,3] console.log('result',arr.forEach(item => item * 2)) // result undefined
7. flat() 将嵌套数组“拉平”,返回一个新数组
let arr = [1,[2, [3, [4, 5]]]] console.log('result', arr.flat()) // result [1, 2, [3, [4, 5]]] console.log('result', arr.flat(2)) // result [1, 2, 3, [4, 5]] console.log('result', arr.flat(Infinity)) // result [1, 2, 3, 4,5]
8. includes() 判断数组是否包含某个元素,返回布尔值
let arr = [1,2,3] console.log('result', arr.includes(2)) // result true console.log('result', arr.includes(5)) // result false
9. some() 检测数组中是否有元素满足条件,返回布尔值
let arr = [1,2,3] console.log('result', arr.some((item) => item < 5)) // result true console.log('result', arr.some((item) => item > 5)) // result false
10. every() 检测数组中的所有元素是否都满足条件,返回布尔值
let arr = [1,2,3] console.log('result', arr.every((item) => item < 5)) // result true console.log('result', arr.every((item) => item > 5)) // result false
11. find() 返回数组中满足条件的第一个元素,若不存在则返回 undefined
let arr = [{ id: 1, name: '张三' },{ id: 2, name: '李四' },{ id: 3, name: '王五' }] console.log('result', arr.find((item) => item.id === 2)) // result {id: 2, name: '李四'}
12. findIndex() 返回数组中满足条件的第一个元素的索引,若不存在则返回 -1
let arr = [{ id: 1, name: '张三' },{ id: 2, name: '李四' },{ id: 3, name: '王五' }] console.log('result', arr.findIndex((item) => item.id === 2)) // result 1
13. indexOf() 返回数组中指定元素的第一个索引,若不存在则返回 -1
let arr = [1,2,3] console.log('result', arr.indexOf(3)) // result 2
14. lastIndexOf() 返回数组中指定元素的最后一个索引,若不存在则返回 -1
let arr = [1,2,3,4,3,5] console.log('result', arr.lastIndexOf(3)) // result 4
浙公网安备 33010602011771号