创建数组
let arr = [1,2,3]
let arr1 = new Array(1,2,3)
let arr2 = new Array(3) //一个数字代表数组长度
数组方法
split()
split() 方法用于把一个字符串分割成字符串数组。
var str="How are you doing today?"
var n=str.split(" ")
console.log(n) //How,are,you,doing,today?
concat()
var arr=[1,2,3];
var arr2=[4,5];
var arr3=[6,7,[8,9]];
var str="hello wrold";
var num=10;
arr.concat(arr2); //返回[1,2,3,4,5]
arr.concat(str); //返回[1,2,3,"hello world"]
arr.concat(num); //返回[1,2,3,10];
arr.concat(arr3); //返回[1,2,3,6,7,[8,9]]
slice()
返回指定数组的子数组,返回的是一个新的数组。
他接受两个参数,返回的数组包含第一个参数指定位置和所有但不包含第二个参数指定位置的所有数组元素
var arr=[1,2,3,4,5];
arr.slice(1,3); //返回[2,3];
//只指定一个参数,则返回从第一个参数指定的位置开始到数组结尾的所有数组元素
var arr=[1,2,3,4,5];
arr.slice(2); //返回[3,4,5];
//如果参数是负数,则表示倒数位置,如-1表示倒数第一个元素,-3表示倒数第三个元素
var arr=[1,2,3,4,5];
arr.slice(1,-1); //return [2,3,4];
arr.slice(-3,-1); //return [3,4];
arr.slice(-6,-1); //return [1,2,3,4];
splice()
splice()插入或删除数组元素的通用方法,是在原数组上操作,会修改原数组,同时原数组的元素索引值会相应的增加或减小;返回的是被删除元素组成的数组,如果被删除的个数为零,则返回空数组[]
第一个参数指定了要插入或删除的元素在数组中的位置,第二个参数指定了从指定位置开始的要删除的元素个数(删几个),第三个参数在删的位置加入内容
var arr=[1,2,3,4,5,6];
var returnVal=arr.splice(4); //returnVal=[5,6]; arr=[1,2,3,4];
returnVal=arr.splice(1,2); //returnVal=[2,3]; arr=[1,4];
returnVal=arr.splice(1,1); //returnVal=[4]; arr=[1];
var arr=[1,2,3,4,5,6];
var returnVal=arr.splice(1,0,'a','b'); //returnVal=[]; arr=[1,'a','b',2,3,4,5,6];
returnVal=arr.splice(1,2,7,[8,9]); //returnVal=["a","b"]; arr=[1,7,[8,9],2,3,4,5,6];
push()与pop()
push():在数组的尾部添加一个或多个元素,并返回数组新的长度
var arr=[1];
var returnVal=arr.push("2",3); //arr=[1, "2", 3], returnVal=3;
pop():在数组的尾部删除一个元素,并返回删除的元素
var arr=[1,2,3];
var returnVal=arr.pop(); //arr=[1, 2], returnVal=3;
unshift()与shift()
unshift()与shift()方法类似于push()与pop(),只不过他是在数组头部进行插入或删除操作,同时已存在的元素的索引会跟着变得,不会出现稀疏数组
var arr=[1,2];
var returnVal=arr.unshift(3); //arr=[3,1,2], returnVal=3;
var arr=[1,2,3];
var returnVal=arr.shift(); //arr=[2,3], returnVal=1;
var arr2=[1,2];
var returnVal2=arr2.unshift(4,5,6); //arr2=[4,5,6,1,2], returnVal2=5;
join()
把数组中所有元素转化为字符串并连接起来,并返回该字符串,
var arr=[1,2,3];
var str=arr.join("#"); //str="1#2#3";
//如果没有指定分隔符,则默认为逗号
var str2=arr.join(); //str2="1,2,3";
reverse()
在原数组上把元素的顺序颠倒过来,并返回该数组
var arr=[1,2,3];
arr.reverse(); //arr=[3,2,1];
sort()
在原数组上对数组元素进行排序,并返回该数组
在没有使用参数的时候,是将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序
var arrNum=[2,11,3];
var arrStr=["bb","aa","cc"];
arrNum.sort(); //arrNum=[11,2,3]
arrStr.sort(); //arrStr=["aa","bb","cc"];
sort()能接受一个比较函数作为参数
var arrNum2=[3,5,2,1,4];
arrNum2.sort(function(a,b){
return a-b;
}); //arrNum2=[1,2,3,4,5];
arrNum2.sort(function(a,b){
return b-a;
}); //arrNum2=[5,4,3,2,1];
Array.from()
转化成数组
console.log(Array.from('foo')); // Array ["f", "o", "o"]
console.log(Array.from([1, 2, 3], x => x + x)); // Array [2, 4, 6]
indexOf()
查找数组内指定元素位置,查找到第一个后返回其索引,没有查找到返回-1
var arr =[2,3,5,7,3,9]
arr.indexOf(3) //1
forEach()
遍历数组,对数组的每个元素执行一次提供的函数
var arr=[1,2,5,6,8]
arr.forEach(function(e,i,arr){
arr[i]=e*e
})
console.log(arr)// [1, 4, 25, 36, 64]
数组变换
map()
let arr = [1,2,3,4]
arr.map(item => item*item) //[1,4,9,16]
filter()
let arr = [1,2,3,4,5,6]
arr.filter(item => item%2 === 0) //[2,4,6]
reduce()
let arr = [1,2,3,4,5,6]
arr.reduce((sum,item) => { return sum+item }, 0) // 21