一、创建
1)使用Array构造函数
var arr1 = new Array();
= new Array(num); //num = length长度
= new Array('arr1','arr2',...); //包含这些项
2)使用var let const
var arr1 = [];
= [num]; //包含这一项
= ['arr1','arr2',...]; //包含这些项
1、使用Array.of()方法
创建一个包含所有参数的数组
let arr = Array.of(); //[]
let arr1 = Array.of(1, 2, 3, 4, 5); // [1, 2, 3, 4, 5]
let arr2 = Array.of(undefined); // [undefined]
二、方法
(一)不改变原数组
2、join
该方法可以将数组里的元素,通过指定的分隔符,以字符串的形式连接起来。
返回值:返回一个新的字符串
let arr = ['h','e','l','l','o','!'];
let arr1 = arr.join(); // 'h,e,l,l,o,!'
let arr2 = arr.join(''); // 'hello!'
console.log(arr); // ['h','e','l','l','o','!']
3、find
找到符合条件的项,并且返回第一项
let arr = [1, 2, 3, 4, 5];
let arr1 = arr.find(ele=> ele > 2); // 3
console.log(arr); // [1, 2, 3, 4, 5]
4、findIndex
找到符合条件的项的下标,并且返回第一个
let arr = [1, 2, 3, 4, 5];
let arr1 = arr.findIndex(ele=> ele > 2); // 2
console.log(arr); // [1, 2, 3, 4, 5]
5、indexOf (ele,fromIndex)
从fromIndex这个下标开始,元素第一次出现的位置
let arr = [1, 2, 3, 4, 5, 1];
let arr1 = arr.indexOf(1); // 0
let arr2 = arr.indexOf(1,1); // 5
let arr3 = arr.indexOf(6); // -1
console.log(arr); // [1, 2, 3, 4, 5, 1]
6、lastIndexOf()
在数组中搜索指定项,并返回其位置。
let arr = [1, 2, 3, 4, 5, 1];
let arr1 = arr.lastIndexOf(1); // 5
let arr2 = arr.lastIndexOf(1,1); // 0
let arr3 = arr.lastIndexOf(6); // -1
console.log(arr); // [1, 2, 3, 4, 5, 1]
7、concat()
用于连接两个或多个数组。
let arr = [1, 2, 3, 4, 5];
let arr1 = [6, 7, 8]
let arr2 = arr.concat(arr1); // [1, 2, 3, 4, 5, 6, 7, 8]
console.log(arr,arr1); // [1, 2, 3, 4, 5],[6, 7, 8]
8、slice(start,end)
start:开始下标 end:结束下标
将数组中的选定元素作为新的数组对象返回。
let arr = [1, 2, 3, 4, 5];
let arr1 = arr.slice(2) // [3, 4, 5]
let arr2 = arr.slice(2,4); // [3, 4]
console.log(arr); // [1, 2, 3, 4, 5]
9、toString()
返回一个包含所有数组值的字符串,以逗号分隔。
let arr = ['h','e','l','l','o','!'];
let arr1 = arr.toString() // 'h,e,l,l,o,!'
console.log(arr); // ['h','e','l','l','o','!']
(二)改变原数组
10、fill(val,start,end)
val:填充值 start,end:可空,全空表示全替换,一个有值,表示从该位置后全替换
let arr = [1, 2, 3, 4, 5];
let arr1 = arr.fill(1); // [1, 1, 1, 1, 1]
let arr2 = [1, 2, 3, 4, 5];
let arr3 = arr2.fill(1,3); // [1, 2, 3, 1, 1]
let arr4 = [1, 2, 3, 4, 5];
let arr5 = arr4.fill(1,2,4); // [1, 2, 1, 1, 5]
console.log(arr,arr2,arr5); // [1, 1, 1, 1, 1],[1, 2, 3, 1, 1],[1, 2, 1, 1, 5]
11、copyWithin(target,start,end)
target:要被替换的索引位置 start:拷贝的开始下标 end:拷贝的结束下标
将数组元素复制到数组中的另一个位置,覆盖现有值。此方法永远不会向数组添加更多项。注意:此方法会覆盖原始数组。
let arr = [1, 2, 3, 4, 5];
let arr1 = arr.copyWithin(1,2,3); // [1, 3, 3, 4, 5]
console.log(arr); // [1, 3, 3, 4, 5]
12、pop()
删除并返回数组的最后一个元素。
let arr = [1, 2, 3, 4, 5];
let arr1 = arr.pop() // 5
console.log(arr); // [1, 2, 3, 4]
13、push()
将新项添加到数组的末尾,并返回新长度。
let arr = [1, 2, 3, 4, 5];
let arr1 = arr.push(6) // 6
console.log(arr); // [1, 2, 3, 4, 5, 6]
14、shift()
删除并返回第一个元素。
let arr = [1, 2, 3, 4, 5];
let arr1 = arr.shift() // 1
console.log(arr); // [2, 3, 4, 5]
15、unshift()
将新项添加到数组的开头,并返回新长度。
let arr = [1, 2, 3, 4, 5];
let arr1 = arr.unshift(0) // 6
console.log(arr); // [0, 1, 2, 3, 4, 5]
16、splice(下标、数量、添加新项)
从数组添加/删除项目,并返回删除的项目。
let arr = [1, 2, 3, 4, 5];
let arr1 = arr.splice(2) // [3, 4, 5]
let arr2 = [1, 2, 3, 4, 5];
let arr3 = arr2.splice(2,1) // [3]
let arr4 = [1, 2, 3, 4, 5];
let arr5 = arr4.splice(2,0,6) // [1, 2, 6, 3, 4, 5]
console.log(arr,arr2,arr4); // [0, 1, 2, 3, 4, 5],[1, 2, 4, 5],[1, 2, 6, 3, 4, 5]
17、reverse()
反转数组中元素的顺序。
let arr = [1, 2, 3, 4, 5];
let arr1 = arr.reverse() // [5, 4, 3, 2, 1]
console.log(arr); // [5, 4, 3, 2, 1]
18、sort()
对数组的项进行排序。
let arr = [1, 2, 3, 4, 5, 0, 7, 6];
let arr1 = arr.sort() // [0, 1, 2, 3, 4, 5, 6, 7]
let arr2 = [1, 2, 3, 4, 5, 0, 7, 6];
let arr3 = arr2.sort((a,b)=>{
return b-a
}) // [7, 6, 5, 4, 3, 2, 1, 0]
console.log(arr,arr2); // [0, 1, 2, 3, 4, 5, 6, 7],[7, 6, 5, 4, 3, 2, 1, 0]
(三)其他方法
下列方法本身不会改变原数组任何属性,但是强行访问内部进行重新赋值时会改变原数组。
19、every()
检查数组中的所有元素是否都符合条件。 true/false
let arr = [1, 2, 3, 4, 5];
let arr1 = arr.every(ele=> {return ele > 0}); // true
let arr2 = arr.every(ele=> {return ele > 2}); // false
let arr3 = [1, 2, 3, 4, 5];
let arr4 = arr3.every((ele,index)=> {
arr3[index] = ele + 1;
return ele > 0
}); // true
console.log(arr,arr3); // [1, 2, 3, 4, 5],[2, 3, 4, 5, 6]
20、some()
检查数组中是否有元素符合条件。 true/false
let arr = [1, 2, 3, 4, 5];
let arr1 = arr.some(ele=> {return ele > 0}); // true
let arr2 = arr.some(ele=> {return ele > 6}); // false
let arr3 = [1, 2, 3, 4, 5];
let arr4 = arr3.some((ele,index)=> {
arr3[index] = ele + 1;
return ele > 0
}); // true
console.log(arr,arr3); // [1, 2, 3, 4, 5],[2, 3, 4, 5, 6]
21、forEach()
遍历,可能会改变原数组。
let arr = [1, 2, 3, 4, 5];
arr.forEach(ele=> {
ele + 1
}); // [1, 2, 3, 4, 5]
let arr1 = [1, 2, 3, 4, 5];
arr1.forEach((ele,index)=> {
arr1[index] = ele + 1
}); // [2, 3, 4, 5, 6]
22、map()
遍历,返回新数组。
let arr = [1, 2, 3, 4, 5];
let arr1 = arr.map(ele=> {
ele + 1
return ele + 1
}); // [2, 3, 4, 5, 6]
let arr2 = [1, 2, 3, 4, 5];
let arr3 = arr2.map((ele,index)=> {
arr2[index] = ele + 1
return ele + 2
}); // [3, 4, 5, 6, 7]
console.log(arr,arr2); //[1, 2, 3, 4, 5],[2, 3, 4, 5, 6]
23、filter()
过滤满足条件的值,返回新数组。
let arr = [1, 2, 3, 4, 5];
let arr1 = arr.filter(ele=>{
return ele > 2
}) // [3, 4, 5]
let arr2 = [1, 2, 3, 4, 5];
let arr3 = arr2.filter(ele=>{
ele ++
return ele > 2
}) // [2, 3, 4, 5]
let arr4 = [1, 2, 3, 4, 5];
let arr5 = arr4.filter((ele,index)=>{
arr4[index] = ele + 1;
return ele > 2
}) // [3, 4, 5]
console.log(arr,arr2,arr4); // [1, 2, 3, 4, 5],[1, 2, 3, 4, 5],[2, 3, 4, 5, 6]
24、reduce()
为数组的每个值(从左到右)执行提供的函数,并将数组缩减为单个值。
常用于叠加
let arr = [1, 2, 3, 4, 5];
let arr1 = arr.reduce((a,b)=> a + b) // 15
let arr2 = [1, 2, 3, 4, 5];
let arr3 = arr2.reduce((prev,cur,index,arr)=>{
arr2[index] = cur + 1;
return prev + cur
}) // 15
console.log(arr,arr2); // [1, 2, 3, 4, 5],[1, 3, 4, 5, 6]
25、reduceRight()
为数组的每个值(从右到左)执行提供的函数,并将数组缩减为单个值,可给想返回的数据类型
let arr = [1, 2, 3, 4, 5];
let arr1 = arr.reduceRight((a,b)=> a + b) // 15
let arr2 = [1, 2, 3, 4, 5];
let arr3 = arr2.reduceRight((prev,cur,index,arr)=>{
arr2[index] = cur + 1;
return prev + cur
}) // 15
console.log(arr,arr2); // [1, 2, 3, 4, 5],[2, 3, 4, 5, 5]
26、Array.from()
将类数组转换为数组
let arr = '12345';
let arr1 = Array.from(arr) // ['1', '2', '3', '4', '5']
let arr2 = Array.from(arr, ele=> ele*2) // [2, 4, 6, 8, 10]
let arr3 = [1, 2, 3, 4, 5];
let arr4 = Array.from(arr3, (ele,index)=> {
arr3[index] = ele * 2;
return ele*2
}) // [2, 4, 6, 8, 10]
console.log(arr,arr3); //'12345',[2, 4, 6, 8, 10]