WIP:
前言
本文提供笔记哥用JavaScript/TypeScript刷题时的常用的Array相关的的API。
方便阅读和快速理解,本文尽量提供这些API的中文注解。
1. 基于基础array [] 的操作
- 往数组尾部增加元素
arr.push(n);
- 往数组尾部增加另一个数组的所有元素,但不是直接添加另一个数组,而是要另一个数组的元素都展开后加入
// assume arr2 代表另一个数组 arr.push(...arr2);
- 往数组中间插入一个元素
arr.splice(insertIndex, 0, element);
举例:
res.splice(insertPos, 0, newInterval);
在上面的parameters中,第二个parameter
0
是deleteCount。因为splice函数允许从insertIndex的位置开始,往后删除若干个元素,但由于我们这里不做任何删除,所以为0
。
此外,splice允许从插入位置开始,插入多个元素,比如:arr.splice(insertIndex, 0, ele1, ele2, ele_n);
arr.splice(insertIndex, 0, ...arr2);
- 从数组头部删除并返回元素
arr.shift(n);
- 从数组尾部删除并返回元素
arr.pop(n); //这和 Stack相关的函数名称pop()刚好相同
- 有shift就有unshift, 从数组头部增加元素,相当于prepend
arr.unshift(num);
从这里可以看出,JavaScript中的数组更像是一个双端队列deque,因为它的头尾都可以加减元素。
- 有时候要从array中查找某一个元素所对应的索引
arr.indexOf(num);
假如找到了返回
num
的索引,假如没找到返回-1
。
2. 基于基础array [] 的使用callback function的操作
- 利用reduce()函数做数组内的元素求和
语法:
return arr.reduce((pre, cur) => { return pre + cur; }, initValue);
在遍历的过程中,
cur
是遍历到的当前元素,pre
则为当前元素的前一个元素。所以在开始遍历数组的第一个元素时,pre
的值即为initValue
。
应用举例:return arr.reduce((pre, cur) => { return pre + cur; }, 0);
- sort排序,sort()内的callback function决定了排序法则
从小到大排序:arr.sort((a, b) => a - b);
注意,有时在编译器中,若要对数组内的数值进行排序,这个callback函数是要明确写出来的,否则对一个正整数数组
arr
,arr.sort()
得到的是原来的没有排序的结果。
从大到小排序:
只要把callback函数内的两个相减变量的顺序颠倒一下即可。arr.sort((a, b) => b - a);
3. 使用Array class的操作
- 初始化某个固定长度的数组,并将其中的每个元素赋予一个初始值
语法:
Array(len).fill(num);
举例:
const arr = Array(ratings.length).fill(1);
规定
arr
是个长度与ratings
的长度相同的数组,且数组内的每个值都初始化为1。
总结
您还有什么要补充的JavaScript/TypeScript刷题常用的Array类API吗?如果YES,请留言,不吝赐教。