数组中栈和队列的操作
push和unshift函数异同
异:push向数组尾部添加元素,unshift向数组头部添加元素;
同:返回数组长度。
pop和shift函数的不同点
pop:返回数组最后一个元素,shift:返回数组第一个元素。
数组判断
最优:Array.isArray()
数组转换
1.数组 => 字符串:toString()(字符串默认以逗号连接),join()(字符串以指定符号连接)
2.字符串 => 数组:split()(数组以指定符号隔开),[...'hello'](数组默认以逗号隔开)
3.数组 => 对象:Object.assign({},[1,2,3]) 或者 {...['a','b','c']}
4.对象 => 数组:
for (let [key, value] of Object.entries(obj)) {
arr.push({key, value});
}
5.类数组对象 => 数组:
(1)Array.from() (1.DOM 操作返回的 NodeList 集合;2.函数内部的arguments对象。类数组对象必须包含length属性。)
(2)兼容性最优:
const toArray = (() =>
Array.from ? Array.from : obj => [].slice.call(obj)
)();
数组复制
[...arr]
数组合并
[1,2,...arr]
数组中指定元素查找
find()和findIndex()的区别
1.find()返回数组中符合条件的元素,而findIndex()则返回数组中符合条件元素的索引值。
2.若没有符合条件的元素,find()返回undefined,而findIndex()则返回-1。
数组被填充指定的元素
fill()和splice()的异同
异:1.fill()第一个参数是填充值,第二个和第三个参数是起始和结束的索引值;
splice()第一个参数是添加/删除元素的起始索引值,第二参数表示需要删除元素的个数,从第三个参数起后面的参数表示需要填充的值。
2.fill()必须删除数组中指定范围的值后才能填充数据,但是splice()可以通过第二个参数来指定需不需要删除数组中的元素以及需要删除元素的个数。
同:都有向数组中填充元素的功能。
数组中是否包含指定元素
includes()相较于indexOf()的最大优势在于:可以检测数组中是否包含NaN,且更加语义化。
兼容版:
const contains = (() =>
Array.prototype.includes
? (arr, value) => arr.includes(value)
: (arr, value) => arr.some(el => el === value)
)();
contains()函数共有两个参数:第一个参数接收数组,第二个参数接收需要判断的数值。