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
posted @ 2023-08-05 15:39  Tursum  阅读(322)  评论(0编辑  收藏  举报