JS数组有哪些常用原生方法?哪些能改变数组本身?

JS数组有哪些常用原生方法?哪些能改变数组本身?

1. 数组和字符串的转换方法

toString 不改变原数组

1
2
const arr = [1, 2, 3]
console.log(arr.toString()); // 1,2,3

join 不改变原数组

join(str) 数组转字符串,接收一个参数,默认为逗号分隔符。

1
2
3
4
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() 删除并返回数组最后一个元素。

1
2
3
const arr = [1, 2, 3]
console.log(arr) // [1, 2, 3]
console.log(arr.pop()) // 3

push 改变原数组

push() 向数组末尾添加一个或多个元素,并返回新的长度。

1
2
3
const arr = [1, 2]
console.log(arr.push(3)) // 3
console.log(arr) // [1, 2, 3]

3. 数组首部操作方法

shift 改变原数组

shift() 删除并返回数组第一个元素。

1
2
3
const arr = [1, 2, 3]
console.log(arr) // [1, 2, 3]
console.log(arr.shift()) // 1

unshift 改变原数组

unshift() 向数组首部添加一个或多个元素,并返回新的长度。

1
2
3
const arr = [1, 2]
console.log(arr.unshift(3)) // 3
console.log(arr) // [3, 1, 2]

4. 排序方法

reverse 改变原数组

reverse() 颠倒数组中元素顺序。

1
2
3
const arr = [1, 2, 3, 4]
console.log(arr.reverse()) // [4, 3, 2, 1]
console.log(arr) // [4, 3, 2, 1]

sort 改变原数组

sort() 对数组进行排序。

1
2
3
const arr = [2, 4, 3, 1]
console.log(arr.sort()) // [1, 2, 3, 4]
console.log(arr) // [1, 2, 3, 4]

sort() 按照数组元素数值的大小对数字进行排序,是按照字符编码的顺序进行排序,那怎么样根据元素数值大小进行排序呢?

1
2
3
4
5
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) 连接两个或多个数组,返回一个新的数组。

1
2
3
4
5
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开始。

1
2
3
4
5
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 改变原数组

1
2
3
4
5
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) 从数组的末尾开始向前查找。

1
2
3
4
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
作者

zwx

发布于

2024-04-22

更新于

2024-04-22

许可协议

评论