数组的常用方法
(内置方法:直接使用,只需按要求传递对应的参数)
1、join(连接字符)
作用是将数组中的元素通过给定的连接字符连成一个字符串
var arr = [1,2,3,4]; let a = arr.join('*'); console.log(a);//1*2*3*4
2、push(值/变量)
从数组的末尾向数组添加元素
var arr = [12, 23, 26, 45, 58, 60]; arr.push(88); console.log(arr);//[12, 23, 26, 45, 58, 60, 88]
3、pop()
从数组的末尾删除元素,一次只删除一个,返回的是被删除的元素。无需传参
var arr = [12, 23, 26, 45, 58, 60]; let b = arr.pop(); console.log(b);//60
4、shift()
从数组的首部删除元素
var arr = [12, 23, 26, 45, 58, 60]; let c = arr.shift(); console.log(c);//12 let d = arr.shift(1);//参数代表元素下标 console.log(d);//23---返回被删除的元素的值 let e = arr.shift(1,2); console.log(e);//26 var arr = [12, 23, 26, 45, 58, 60]; arr.shift(12); console.log(arr);//[23,26,45,58,60]
5、unshift(值/变量)
从数组的首部插入元素
var arr = [12, 23, 26, 45, 58, 60]; arr.unshift(1); console.log(arr);//[1, 12, 23, 26, 45, 58, 60] var arr = [12, 23, 26, 45, 58, 60]; arr.unshift(35); console.log(arr);//[35, 12, 23, 26, 45, 58, 60]
6、sort()
排序函数。默认的是从小到大。若需要降序排序,需要自己写比较函数。它是在原数组上排序
数字:0 1 2 ...... 9
数字字符:'0','1'.....'9'
'0'的ASCII码值是48
' ' --- 32
'a' --- 97
'A' --- 65
var arr = [12, 23, 26, 45, 58, 60]; arr = arr.sort(); console.log(arr); //Array(6)0: 12 //1: 23 //2: 26 //3: 45 //4: 58 //5: 60 //length: 6 //[[Prototype]]: Array(0)
7、reverse()
将数组元素颠倒顺序
var arr = [8,10,20,47,58,99]; arr.reverse(); console.log(arr);//[99, 58, 47, 20, 10, 8]
8、concat()
连接两个或多个数组
var a = [1,2,3]; var b = [10,20,30]; var c = a.concat(b); console.log(c); //Array(6)0: 1 //1: 2 //2: 3 //3: 10 //4: 20 //5: 30 //length: 6 //[[Prototype]]: Array(0)
9、slice()
切片函数:从原数组中截取部分元素组成新的数组。在截取时需要指定开始位置(开始下标)和结束位置(结束下标)
var arr = [1, 3, 5, 7, 9, 11] var a1 = arr.slice(1) //'1'是下标,表示从下标为1的位置开始到数组末尾全部截取 console.log(a1)//3,5,7,9,11 var a2 = arr.slice(1, 3) //截取下标1~3之间的元素,包含下标为1的元素,不包含下标为3的元素 console.log(a2)//3,5 var a3 = arr.slice(1, -2) //等价于slice(1,3),-2不是下标,表示倒数第二个元素 console.log(a3)//3,5,7 var a4 = arr.slice(-4, -2) //截取倒数第四个元素~倒数倒数第二个元素之间的元素 console.log(a4)//5,7
10、splice()
可以实现对数组元素的插入、删除和替换
(1)删除元素:
//splice(参数1,参数2):返回的删除的元素。第一个参数代表下标,第二个参数表示删除的项数。 var arr = [1, 3, 5, 7, 9, 11] var a5 = arr.splice(1, 3) //删除从下标1开始的连续3个元素 console.log(a5)//[3,5,7] console.log(arr)//[1,9,11]
(2)替换/插入元素:
splice(参数1,参数2,参数3):
参数1:表示替换位置
参数2:表示项数(非零为替换,0表示插入)
参数3:用于替换的新值
var arr = [1, 3, 5, 7, 9, 11] arr.splice(1, 1, 89) //替换 console.log(arr)//[1, 89, 5, 7, 9, 11] arr.splice(1, 0, 78) //插入 console.log(arr)//[1, 78, 89, 5, 7, 9, 11]
var arr = [1,2,3,4,5]; arr.splice(3,1,79); console.log(arr);//[1,2,3,79,5] arr.splice(3,0 ,99); console.log(arr);//[1,2,3,99,79,5]
11、indexOf(元素)
从数组的开头(位置0)开始向后查找
从左向右查找元素的位置。返回元素在数组中的下标(索引),返回-1表示没有找到
```javascript
var arr = [10,25,33,11,89] var index1 = arr.indexOf(12) //从左往右查找,返回找到的第一个12的下标 console.log(index1)//-1
var a1 = [11,22,55,33,44,55]; var index1 = a1.indexOf(22); var lastIndex1 = a1.lastIndexOf(44); console.log(index1);//1 console.log(lastIndex1);//4
var index2 = a1.indexOf(66); console.log(index2);//-1 var index3 = a1.indexOf(55); console.log(index3);//2 ```
12、lastIndexOf(元素)
从数组的末尾开始向前查找
从右向左查找元素的位置。返回元素在数组中的下标(索引),返回-1表示没有找到
var arr = [12, 25, 33, 12, 89] var last_index = arr.lastIndexOf(12) console.log(last_index)//3 var lastIndex2 = arr.lastIndexOf(66); console.log(lastIndex2);//-1 var lastIndex3 = arr.lastIndexOf(12); console.log(lastIndex3);//3
var arr = [1,2,3,4,5]; arr.splice(3,1,79); console.log(arr);//[1,2,3,79,5] arr.splice(3,0 ,99); console.log(arr);//[1,2,3,99,79,5] var a1 = [11,22,55,33,44,55]; var index1 = a1.indexOf(22); var lastIndex1 = a1.lastIndexOf(44); console.log(index1);//1 console.log(lastIndex1);//4 var index2 = a1.indexOf(66); console.log(index2);//-1 var index3 = a1.indexOf(55); console.log(index3);//2 var lastIndex2 = a1.lastIndexOf(66); console.log(lastIndex2);//-1 var lastIndex3 = a1.lastIndexOf(55); console.log(lastIndex3);//5
13、filter过滤
“过滤”功能,数组中的每一项运行给定函数,返回满足过滤条件组成的数组。
filter(function(value,index) {
函数体语句
})
可以实现对数组元素的"过滤",返回的元素构成一个新的数组
var arr = [1,2,3,4,5,6,7,8,9,10] var temp = arr.filter(function(value,index){ //value:表示数组元素,index:表示数组元素的下标 return index % 3==0 || value>=8 //返回下标对3取余等于的元素 }) console.log(temp)
var arr = [1,2,3,4,5,6,7,8,9,10]; //filter过滤元素 var temp = arr.filter(function(value,index){ return index % 3 == 0 || value >= 8 }) console.log(temp);//1,4,7,8,9,10
14、fill(值/变量)
使用特定值填充数组中的一个或多个元素。当只是用一个参数时,该方法会用该参数的值填充整个数组。ES6新增的函数。
用给定的值或变量填充数组
```javascript
var arr = new Array(5) arr.fill(1) //数组的5个单元中都是1 console.log(arr)
//fill填充 var arr = new Array(5); arr.fill(1); console.log(arr);//1,1,1,1,1 ```
15、every
判断数组中每一项都是否满足条件,只有所有想都满足条件,才会返回true。
every(function(value) { // 判断数组中每一项都是否满足条件,只有所有项都满足条件,才会返回 true
return 条件表达式
})
var arr = [1,2,3,4,15,6,7,8,9,10] var flag = arr.every(function(value){ //参数value代表数组元素 return value <=10 //若数组中每个元素都小于等于10,则返回true,否则返回false }) console.log(flag) //every:所有向都满足条件,才返回true var arr = [1,2,3,4,5,6,7,8,9,10]; var flag = arr.every(function(value){ return value <= 10 }) console.log(flag);//true var arr = [1,12,3,4,5,6,7,8,9,10]; var flag = arr.every(function(value){ return value <= 10 }) console.log(flag);//false
16、includes()
判断一个数组中是否包含一个指定的值
var arr = [45, 78, 89, 55, 46, 31] var flag = arr.includes(89) //判断arr数组中是否包含89,若有返回true,没有就返回false console.log(flag)//true var flag1 = arr.includes(89, 3)//从下标为3的元素开始查找,若有返回true,没有就返回false console.log(flag1)//false