「这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战」
一.前言
数组这种数据结构在前端开发中很常见,下面我将对数组的一些方法进行总结归纳.
二.数组
1.数组的所有方法了
可以在浏览器开发者工具页面输入 Array.prototype回车就可以看到数组的所有方法了
2. 数组的分类
我将方法是否会修改原数组分为两类
2.1 修改原数组
- pop/push/shift/unshift
| pop | 数组尾部删除元素 | 返回值是删除的数组项 |
| push | 在数组尾部添加元素 | 返回值是数组的新长度 |
| shift | 在头部删除元素 | 返回值是删除的数组项 |
| unshift | 在头部添加元素 | 返回值是数组的新长度 |
var arr = [1,2,3]
var a = arr.push(5,6) // a: 5, arr: [1,2,3,5,6]
var b = arr.unshift(7,8) // b: 7, arr: [7,8,1,2,3,5,6]
var c = arr.pop() // c: 6, arr: [7,8,1,2,3,5]
var d = arr.shift() // d: 7, arr: [8,1,2,3,5]
感觉这题都能当面试题了,,,,,
- reverse 数组翻转
var arr = [1,2,3]
var r = arr.reverse() // r: [3,2,1] , arr: [3,2,1]
返回值为修改后的数组
- sort 数组排序
var arr = [2,44,66,15,77,32]
var s = arr.sort((a,b) => a-b) // 正序 s:[2, 15, 32, 44, 66, 77], arr:[2, 15, 32, 44, 66, 77]
var ds = arr.sort((a,b) => b-a) // 倒序 ds:[77, 66, 44, 32, 15, 2], arr:[77, 66, 44, 32, 15, 2]
- splice 语法:
array.splice(start[, deleteCount[, item1[, item2[, ...]]]] )
参数
- start
指定修改的开始位置(从0计数)。如果超出了数组的长度,则从数组末尾开始添加内容;
如果是负值,则表示从数组末位开始的第几位(从-1计数,这意味着-n是倒数第n个元素并且等价于`array.length-n`);
如果负数的绝对值大于数组的长度,则表示开始位置为第0位。
- `deleteCount` 可选
- 整数,表示要移除的数组元素的个数。
- 如果 `deleteCount` 大于 `start` 之后的元素的总数,则从 `start` 后面的元素都将被删除(含第 `start` 位)。
- 如果 `deleteCount` 被省略了,或者它的值大于等于`array.length - start`(也就是说,如果它大于或者等于`start`之后的所有元素的数量),那么`start`之后数组的所有元素都会被删除。
- 如果 `deleteCount` 是 0 或者负数,则不移除元素。这种情况下,至少应添加一个新元素。
- ` item1, item2, ... ` 可选
要添加进数组的元素,从`start` 位置开始。如果不指定,则 `splice()` 将只删除数组元素。
返回值
由被删除的元素组成的一个数组。如果只删除了一个元素,则返回只包含一个元素的数组。如果没有删除元素,则返回空数组。
摘自: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
splice方法功能强大,可实现数组的增删改功能
var arr = [1, 2, 3];
// 增加
arr.splice(0,0,8,9); // arr: [8,9,1,2,3] 返回值:[]
//删除
arr.splice(0,3); // 从下标为0的元素开始,删除3个元素。 arr:[2,3], 返回值: [8,9,1]
//修改(如果当前位有值,就先删后加; 无值就直接添加)
arr.splice(2,1,5);// arr: [2,3,5], 返回值:[]