JS数组有哪些常用原生方法?哪些能改变数组本身?
1. 数组和字符串的转换方法
toString 不改变原数组
const arr = [1, 2, 3]
console.log(arr.toString()); // 1,2,3
join 不改变原数组
join(str) 数组转字符串,接收一个参数,默认为逗号分隔符。
const arr = [1, 2, 3]
console.log(arr) // [1, 2, 3]
console.log(arr.join()) // 1,2,3
console.log(arr.join(':')) // 1:2:3
2. 数组尾部操作方法
pop 改变原数组
pop() 删除并返回数组最后一个元素。
const arr = [1, 2, 3]
console.log(arr) // [1, 2, 3]
console.log(arr.pop()) // 3
push 改变原数组
push() 向数组末尾添加一个或多个元素,并返回新的长度。
const arr = [1, 2]
console.log(arr.push(3)) // 3
console.log(arr) // [1, 2, 3]
3. 数组首部操作方法
shift 改变原数组
shift() 删除并返回数组第一个元素。
const arr = [1, 2, 3]
console.log(arr) // [1, 2, 3]
console.log(arr.shift()) // 1
unshift 改变原数组
unshift() 向数组首部添加一个或多个元素,并返回新的长度。
const arr = [1, 2]
console.log(arr.unshift(3)) // 3
console.log(arr) // [3, 1, 2]
4. 排序方法
reverse 改变原数组
reverse() 颠倒数组中元素顺序。
const arr = [1, 2, 3, 4]
console.log(arr.reverse()) // [4, 3, 2, 1]
console.log(arr) // [4, 3, 2, 1]
sort 改变原数组
sort() 对数组进行排序。
const arr = [2, 4, 3, 1]
console.log(arr.sort()) // [1, 2, 3, 4]
console.log(arr) // [1, 2, 3, 4]
sort() 按照数组元素数值的大小对数字进行排序,是按照字符编码的顺序进行排序,那怎么样根据元素数值大小进行排序呢?
const arr = [2, 4, 3, 1]
const arr1 = [...arr].sort((a, b) => a - b)
const arr2 = [...arr].sort((a, b) => b - a)
console.log(arr1) // [1, 2, 3, 4]
console.log(arr2) // [4, 3, 2, 1]
5. 数组连接的方法
concat 不改变原数组
arr1.concat(arr2) 连接两个或多个数组,返回一个新的数组。
const arr1 = [1, 2, 3]
const arr2 = [4, 5]
const newArr = arr1.concat(arr2)
console.log(newArr) // [1, 2, 3, 4, 5]
console.log(arr1) // [1, 2, 3]
6. 数组截取方法
slice 不改变原数组
slice() 方法返回一个新的数组对象,这一对象是一个由 start 和 end 决定的原数组的浅拷贝(包括 start,不包括 end),其中 start 和 end 代表了数组元素的索引。原始数组不会被改变。
正数索引从0开始,负数索引从-1开始。
const arr = [1, 2, 3, 4, 5]
console.log(arr.slice(1)) // [2, 3, 4, 5]
console.log(arr.slice(1, -2)) // [2, 3]
console.log(arr.slice(-3, -1)) // [3, 4]
console.log(arr) // [1, 2, 3, 4, 5]
7. 数组插入方法
splice 改变原数组
const months = ['Jan', 'March', 'April', 'June'];
months.splice(1, 0, 'Feb'); // 在索引1处插入元素
console.log(months); // ["Jan", "Feb", "March", "April", "June"]
months.splice(4, 1, 'May'); // 在索引4处替换1个元素
console.log(months); // ["Jan", "Feb", "March", "April", "May"]
8. 数组索引方法
indexOf lastIndexOf 不改变原数组
两个方法都是返回要查找的项所在数组中首次出现的位置,没找到的话就返回-1。
arr.indexOf(item, start) 从数组的开头开始向后寻找。
arr.lastIndexOf(item, start) 从数组的末尾开始向前查找。
const arr = [2, 4, 1, 9, 1, 2]
console.log(arr.indexOf(2)) // 0
console.log(arr.lastIndexOf(1)) // 4
console.log(arr.indexOf(3)) // -1
9. 总结
改变原数组的方法 | 不改变原数组的方法 |
---|---|
pop | toString |
push | join |
shift | concat |
unshift | slice |
reverse | indexOf |
sort | lastIndexOf |
splice |