- from|of
功能:生成一个数组
区别:
from 从可遍历或类似数组(有length属性)生成(支持map)
of 从可变参数直接生成
注意:默认的构造单个数字参数会被认为是数组的大小
栗子:
Array.from("foo");
// ["f", "o", "o"]
Array.from({length: 5}, (v, k) => k);
// [0, 1, 2, 3, 4]
Array.of(7); // [7]
Array.of(1, 2, 3); // [1, 2, 3]
Array(7); // [ , , , , , , ]
Array(1, 2, 3); // [1, 2, 3]
- map | forEach
功能:将数组中的数据进行遍历操作
区别:
map 遍历并返回一个数组
forEach 遍历一个数组
栗子
[1,2,3].map((x)=>x*x)
// [1,4,9]
[1,2,3].forEach((x)=>console.log(x))
//1
//2
//3
- reduce |reduceRight | join
功能:将数组中的数据进行聚合操作
区别:
reduce 将数组进行遍历操作返回值根绝提供的函数决定(左到右)
reduceRight 将数组进行遍历操作返回值根绝提供的函数决(右到左)
join 将数组进行拼接成字符串(左到右)
栗子
[0, 1, 2, 3, 4].reduce( (prev, curr) => prev + curr )
//10
[0, 1, 2, 3, 4].join(',')
//0, 1, 2, 3, 4]
- concat | slice
功能:数组之间的分合操作
区别:
concat 数组的拼接
slice 数组的拆分
栗子:
var arr1 = ["a", "b", "c"];
var arr2 = ["d", "e", "f"];
var arr3 = arr1.concat(arr2);
//[ "a", "b", "c", "d", "e", "f" ]
arr3.slice(1,3);
//['b','c']
- fill
功能:用指定的值来填充Array
定义:
Array.prototype.fill(value)
Array.prototype.fill(value, start)
Array.prototype.fill(value, start, end)
栗子:
[1, 2, 3].fill(4); // [4, 4, 4]
[1, 2, 3].fill(4, 1); // [1, 4, 4]
[1, 2, 3].fill(4, 1, 2); // [1, 4, 3]
[1, 2, 3].fill(4, 1, 1); // [1, 2, 3]
[1, 2, 3].fill(4, -3, -2); // [4, 2, 3]
[1, 2, 3].fill(4, NaN, NaN); // [1, 2, 3]
Array(3).fill(4); // [4, 4, 4]
[].fill.call({ length: 3 }, 4); // {0: 4, 1: 4, 2: 4, length: 3}
- filter
功能:对数组执行过滤
定义:
Array.prototype.filter(callback[, thisArg])
栗子:
[-1,0,1].filter((x)=>x>0)
//[1]
- find | findIndex | indexOf | lastIndexOf | includes
功能:数组的查找功能
区别:
find 有条件的查找某个值(出现多次取第一个)
findIndex 有条件的查找某个值的位置
some 有条件的查找是否包含某个值
indexOf 查找某个特定值的位置
lastIndexOf 反向超找某个特定值的位置
includes 是否包含某个特定值
备注:
前面三个也可以做遍历操作,适当的变换使用可以简化操作
栗子:
var arr = [12, 5, 8, 130, 44,130];
arr.find((x)=>x >= 15); // 130
arr.findIndex((x)=>x >= 15); // 3
arr.some((x)=>x >= 15) // true
arr.indexOf(12); // 0
arr.indexOf(7); // -1
arr.lastIndexOf(130);//5
arr.includes(5);//true
- push | pop | unshift | shift | splice
功能:对数组做增删
区别:
push 数组末尾添加元素
pop 数组末尾移除元素
unshift 数组头部添加元素
shift 数组头部移除元素
splice 支持增删改(其实是先做删除元素,然后添加元素)
array.splice(start)
array.splice(start, deleteCount)
array.splice(start, deleteCount, item1, item2, ...)
依次是 [删除位置,删除个数,添加的元素]
另外:
添加操作返回的都是新数组的长度
移除操作返回的都是被移除的元素(splice操作返回数组)
- reverse
功能:对数组做反向
栗子:
[1,2,3].reverse();
//[3,2,1]
- sort
功能: 对数组做排序 默认是按字符的Unicode编码顺序
栗子:
[2,3,1].sort((a,b)=>a-b)
//[1,2,3]