数组拓展
Array.from
将类数组的对象和可遍历的对象转化成数组。
let divs = document.getElementsByTagName("div");
//将类数组转成数组
console.log(Array.from(divs).forEach((item)=>console.log(item)))
//定义Array.from方法
Array.icktFrom = function(arrayLike,fn){
// 返回数组
var result = [];
//遍历 arrayLike
for(var i = 0, len = arrayLike.length; i<len; i++){
result[i] = fn?fn(arrayLike[i],i):arrayLike[i]
}
return result
}
Array.icktFrom(divs,(item,index)=>console.log(item))
Array.of
将一组参数值,转换成数组。 创建数组的四种方式,字面量[],构造函数new Array(),工厂函数Array(),静态方法Array.of()
// of方法
// console.log(Array(2))
// console.log(Array("2"))
// console.log(Array(2, 3))
// console.log(Array.of(2))
// console.log(Array.of("2"))
// console.log(Array.of(2, 3))
// 实现
// Array.icktOf = function() {
// // 1 遍历参数,返回数组
// // 2 from
// // return Array.from(arguments)
// // 3 借助数组的方法
// return Array.prototype.slice.call(arguments)
// }
// console.log(Array.icktOf(2))
// console.log(Array.icktOf("2"))
// console.log(Array.icktOf(2, 3))
数组实例方法
copyWithin
在数组内部,将指定位置的成员复制到其他位置(会覆盖原有成员),然后返回当前数组find,
// 数组内部复制
let arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
// 1 粘贴位置,2 复制的起始位置, 3 复制的结束位置
// [0, 1, 2, 4, 5, 6, 7, 7, 8, 9]
// console.log(arr.copyWithin(3, 4, 8));
// 实现
/***
* 数组内部复制
* pos 粘贴位置
* start 复制起始位置
* end 复制结束位置
**/
Array.prototype.icktCopyWithIn = function(pos, start, end) {
return arr.splice(pos, end - start, ...arr.slice(start, end)), arr;
}
console.log(arr.icktCopyWithIn(3, 4, 8));
find findIndex
在数组中查找成员 find返回成员值,不存在返回undefined。 findIndex 返回索引值,不存在返回-1
// find, findIndex indexOf, lastIndexOf
entries(),key() 和valuea()
是遍历数组,返回一个遍历器对象,可以用for...of循环进行遍历。 keys()是对键名的遍历,valuse()是对键值的遍历,entries()是对键值对的遍历
flat(), flatMap()
将嵌套的数组"拉平,变成一维数组,该方法返回一个新的数组。对原数组没有影响。 flatMap先调用map方法,再将得到新的数组拉平(调用flat方法)
// console.log([1, [2, 3], 4, [5, 6], 7].flat())
// console.log([1, [2, 3], 4, [5, 6], 7].flatMap((item) => item))
来源:oschina
链接:https://my.oschina.net/u/4162046/blog/3213740