常用数组的操作方法:
添加删除(4个)
1.push()
将参数添加至数组的尾部,返回值为增加后数组的长度,原数组发生改变
let arr = [1,2,3,4,5]
console.log(arr.push(5)) // 6
console.log(arr) // [1,2,3,4,5,5]
2.pop()
从数组的尾部删除一个元素,返回删除的元素,不接收参数,原数组发生改变
let arr = [1,2,3,4,5]
console.log(arr.pop()) // 5
console.log(arr) //[1,2,3,4]
3.unshift()
向数组中头部增加元素,返回增加元素后的数组的长度,原数组发生改变
let arr = [1,2,3,4,5]
console.log(arr.unshift(2)) // 6
console.log(arr) //[2,1,2,3,4,5]
4.shift()
从数组的头部删除一个元素,返回删除的元素,不接收参数,原数组发生改变
let arr = [1,2,3,4,5]
console.log(arr.shift()) // 1
console.log(arr) // [2,3,4,5]
截取类的方法(2个)
5.slice()
当1个参数时,表示从该参数对应的索引位开始截取,直至数组结束 。
有2个参数时,第一个表示起始位,第2个表示结束位,但是不包含第二个参数对应那个元素//原数组不改变
let arr = [1,2,3,4,5]
console.log(arr.splice(2,2)) //[3,4]
console.log(arr) // [1,2,3,4,5]
6.splice()
splice的作用:删除元素、替换元素、插入元素
当1个参数时,表示截取的起始位,返回截取的数组,原数组发生改变。
当2个参数时,第一个值表示索引位,第二个参数表示截取的长度
当3个参数时,第一个值表示索引位,第二个参数表示截取的长度,第三个及以后的参数会从截取位添加到数组中。
//删除元素
let arr = [1,2,3,4,5]
console.log(arr.splice(2,2)) //[3,4]
console.log(arr) // [1,2,5]
//替换元素
let arr = [1,2,3,4,5]
console.log(arr.splice(2,1,6)) //[3]
console.log(arr) // [1,2,6,4,5]
//插入元素
let arr = [1,2,3,4,5]
console.log(arr.splice(2,1,6,7)) //[3,4]
console.log(arr) // [1,2,6,7,4,5]
7.reverse()
翻转 原数组发生改变
let arr = [1,2,3,4,5]
console.log(arr.reverse()) // [5,4,3,2,1]
console.log(arr) // [5,4,3,2,1]
8.sort()
将数组进行排序,返回值是排好的数组,默认是按照最左边的数字进行排序,不是按照数字大小排序的,见例子。
let arr = [2,10,6,1,4,22,3]
console.log(arr.sort()) // [1, 10, 2, 22, 3, 4, 6]
let arr1 = arr.sort((a, b) =>a - b)
console.log(arr1) // [1, 2, 3, 4, 6, 10, 22]
let arr2 = arr.sort((a, b) =>b-a)
console.log(arr2) // [22, 10, 6, 4, 3, 2, 1]
9.join()
将数组转换成字符串,以参数来拼接
var arr = [8,5,7,111,2];
var str = arr.join("----");
console.log(str); //8----5----7----111----2
10.concat()
将元素添加到数组中,(添加的是元素)返回一个新数组,原数组不变
let arr = [1,2,3,4,5]
console.log(arr.concat([1,2])) // [1,2,3,4,5,1,2]
console.log(arr) // [1,2,3,4,5]
ES5新增数组方法
1.indexOf(n)
返回n在在数组中的索引,无就返回-1
var arr = [1,1,1,1,2,1,3,4];
console.log(arr.indexOf(2),arr.indexOf(22)); // 4 ,-1
2.forEach()
遍历数组中的每个元素,可得到每一项的值和索引值
var arr = [2,1,3];
arr.forEach(function(item,index){
console.log(item,index); // 2 0
// 1 1
// 3 2
})
3.map()
通过指定函数处理数组每个元素,并返回处理后的数组,返回一个新数组
var arr = [2,1,3];
var a = arr.map(function(item,index){
return item * 3;
})
console.log(a); // [6,3,9]
4.filter()
检测数组元素,过滤出满足条件的所有数组元素,返回新数组
var arr = [2,1,3];
var a = arr.filter(function(item){
return item > 1;
})
console.log(a); //[2,3]
5.some()
只要有一个数组元素满足条件就返回true
var arr = [2,1,3];
var a = arr.some(function(item){
return item > 2;
})
console.log(a); // true
6.every()
每一个数组元素都满足条件就返回true
var arr = [2,1,3];
var a = arr.every(function(item){
return item > 0;
})
console.log(a); //true
7.reduce()
累积求和 对数组做聚合操作
var arr = [2,1,3];
var sum = arr.reduce(function(a,b){
return a+b;
})
console.log(sum); //6
ps: arr.forEach()和arr.map()的区别
- arr.forEach()是和for循环一样,是代替for。arr.map()是修改数组其中的数据,并返回新的数据。
- arr.forEach() 没有return arr.map() 有return