创建数组
var arr = new Array(); //创建一个数组
var arr = new Array([size]); //创建一个数组并指定长度
var arr = new Array(element0,element1,...,elementn); //创建一个数组并赋值
var arr = []; //字面量创建数组;
var arr = Array.of(element0,element1,...,elementn); //将一组值转换为数组
- Array.from()
将伪数组变成数组,即只要有length属性就可以转换为数组。
let hope = "success";
console.log(hope.length);
let arr = Array.from(hope);
console.log(arr);
- Array.of()
将一组值转换为数组,类似于数组声明。
let future = Array.of("success","hello","good");
let hope1 = Array.of(100);
console.log(future);
console.log(hope1);
栈方法
先进后出
- push()
可以接收任意数量的参数,把他们逐个添加到数组末尾,并返回修改后数组的长度。
let array = [11,22,33,44,55,66,77,88,99];
array.push(100);
console.log(array);
console.log(array.length);
- pop()
从数组末尾移除最后一项,减少数组的length值,然后返回移除的项。
let array1 = [100,200,300,400];
let delArray1 = array1.pop();
console.log(array1);
console.log(delArray1);
队列方法
先进先出。
- shift()
移除数组中的第一个项并返回该项,同时将数组长度减一。
let array1 = [100,200,300,400];
let delArray1 = array1.shift();
console.log(array1);
console.log(array1.length);
console.log(delArray1);
- unshift()
在数组前添加任意个项并返回新数组的长度。
let array1 = [100,200,300,400];
let array1Length = array1.unshift(0);
console.log(array1Length);
console.log(array1);
排序方法
- reverse()
反转数组项的顺序。
let array1 = [100,200,300,400];
array1.reverse();
console.log(array1);
- sort()
从小到大升序排序,需要注意的是:sort的排序方法是根据数组转换字符串后来进行排序的。
let arr1 = [1,4,7,9,5,10];
console.log(arr1.sort());
因为它们比较的是转换后的字符串值。
操作方法
- concat()
可以基于当前数组中的所有项创建一个新数组,不会影响原数组的值。
let arr2 = [1,2,3,4,5,6];
let newArr2 = arr2.concat([7,8,9],[10,11,12,13]);
console.log(newArr2);
console.log(arr2);
- slice()
它可以基于当前数组中一个或多个项创建一个新数组。
- slice()方法可以接受一个或两个参数,即要返回项的起始和结束位置。
- 在只有一个参数的情况下,slice()方法返回从该参数指定位置开始到当前数组末尾的所有项。
- 如果有两个参数,该方法返回起始和结束位置之间的项(不包含结束位置的个项)。
- slice()方法不会影响原数组。
let arr3 = [3,4,5,6,7,8,9]; let newArr3 =arr3.slice(1,4); console.log(newArr3); let newArr4 = arr3.slice(3); console.log(newArr4); console.log(arr3);
- splice()
删除:
可以删除任意数量的项,只需要指定两个参数:要删除的第一项的位置和要删除的项数。splice(0,2)会删除数组中前两项。
let arr4 = [99,88,77,66,55];
arr4.splice(0,2);
console.log(arr4);
插入、替换:
可以向指定位置插入任意数量的项,只需要提供3个参数:起始位置、要删除的项数和要插入的项。如果插入多个项,可以再传入第四、第五,任意多个项。比如,splice(2,1,"hello","hi")会从当前数组的位置2并删除数组位置2的项然后插入字符串。
let arr5 = [1,2,3,4,5];
arr5.splice(2,1,"hello","hi");
console.log(arr5);
- arr.fill(target,start,end)
使用给定的值,填充一个数组。需要注意的是:填充完后会改变原数组。
- target-待填充的元素
- start-开始填充的位置-索引
- 终止填充的位置-索引(不包括该位置)
let arr6 = [1,2,3,4,5,6,7,8]; let arr7 = [9,10,11,12,13]; arr6.fill(9); console.log(arr6); arr7.fill(8,2,5); console.log(arr7);
- Array.isArray(arr)
判断传入的值是否为数组。
let arr8 = [];
let obj ={};
console.log(Array.isArray(arr8));
console.log(Array.isArray(obj));
位置方法
- indexOf()和lastIndex()
这两个方法都接受两个参数:要查找的项和表示查找起点位置的索引。其中,indexOf()方法从数组的开头(位置0)开始向后查找。而lastIndexOf()方法则是从数组的末尾开始向前查找。
let arr6 = [1,2,3,4,5,6,7,8];
console.log(arr6.indexOf(2));
console.log(arr6.lastIndexOf(2));
console.log(arr6.indexOf(1,2));
console.log(arr6.lastIndexOf(1,2));
- find()
数组实例的find方法,用于找出第一个符合条件的数组成员。它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员。如果没有符合条件的成员,则返回undefined。
let arr7 = [1,2,3,4,5,6,7];
let index = arr7.find(val => val===3);
let index1 = arr7.find(val => val===8);
console.log(index);
console.log(index1);
- findIndex()
和数组find方法相似,返回符合条件的第一个项的位置。如果所有成员不符合则返回-1。
let arr7 = [1,2,3,4,5,6,7];
let index = arr7.findIndex(val => val===3);
let index1 = arr7.findIndex(val => val===8);
console.log(index);
console.log(index1);
- includes()
方法返回一个布尔值,表示某个数组是否包含给定的值,与字符串includes方法类似。
迭代方法
- every()
对数组的每一项运行给定函数,如果该函数对每一项都返回true,则返回true。
- filter()
对数组的每一项运行给定函数,返回该函数会返回true的项组成的数组。
let arr7 = [1,2,3,4,5,6,7];
let newArr7 = arr7.filter(value => value > 3);
console.log(newArr7);
- forEach()
对数组的每一项运行给定函数,没有返回值。
- map()
对数组的每一项运行给定函数,返回每次函数调用的结果组成的数组。
let arr7 = [1,2,3,4,5,6,7];
let newArr7 = arr7.map(value => value +100);
console.log(newArr7);
- some()
对数组的每一项运行给定函数,如果该函数对任一项返回true,则返回true。
- reduce()和reduceRight()
这两个方法都会迭代数组的所有项,然后构建一个最终返回的值。其中reduce()方法从数组的第一项开始,逐个遍历到最后。而reduceRight()则从数组的最后一项开始,向前遍历到第一项。
- entries(),keys()和values()
ES6 提供三个新的方法——entries(),keys()和values()——用于遍历数组。它们都返回一个遍历器对象,可以用for…of循环进行遍历,唯一的区别是keys()是对键名的遍历、values()是对键值的遍历,entries()是对键值对的遍历。
let arr7 = [1,2,3,4,5,6,7];
for(let val of arr7.entries()){
console.log(val);
}
for(let val1 of arr7.keys()){
console.log(val1);
}
for(let val2 of arr7.values()){
console.log(val2);
}