javaScript里非常重要的一个知识点,就是数据的操作,也就是增删改查,说到增删改查,那就要说说数组的操作了,因为大部分情况下,后台返回的数据都是数组,所以我来总结一下一些数组操作的方法,如有遗漏,后续补充:
1 arr.push() 从后面添加元素,返回值为添加完后的数组的长度
let arr = [1,2,3,4,5]
console.log(arr.push(5)) // 6
console.log(arr) // [1,2,3,4,5,5]
2 arr.pop() 从后面删除元素,只能是一个,返回值是删除的元素
let arr = [1,2,3,4,5]
console.log(arr.pop()) // 5
console.log(arr) //[1,2,3,4]
3 arr.shift() 从前面删除元素,只能删除一个 返回值是删除的元素
let arr = [1,2,3,4,5]
console.log(arr.shift()) // 1
console.log(arr) // [2,3,4,5]
4 arr.unshift() 从前面添加元素, 返回值是添加完后的数组的长度
let arr = [1,2,3,4,5]
console.log(arr.unshift(2)) // 6
console.log(arr) //[2,1,2,3,4,5]
5 arr.splice(i,n,replace) 删除从i(索引值)开始之后的那个元素。返回值是删除的元素
参数:
i :索引值
n :删除的个数
replace(可以没有,没有的话只做删除操作):替换的元素
let arr = [1,2,3,4,5]
console.log(arr.splice(1,2,'a','b')) //[3,4]
console.log(arr) // [1,2,'a','b',5]
6 arr.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]
7 str.split() 将字符串转化为数组
let str = '123456'
console.log(str.split('')) // ["1", "2", "3", "4", "5", "6"]
8 arr.sort() 将数组进行排序,返回值是排好的数组,默认是按照最左边的数字进行排序,不是按照数字大小排序的,见例子。
let arr = [2,12,8,1,4,27,3]
console.log(arr.sort()) // [1, 12, 2, 27, 3, 4, 8]
var arr = [2,12,8,1,4,27,3];
function sequence(a,b){
if (a>b) {
return 1;
}else if(a<b){
return -1
}else{
return 0;
}
}
console.log(arr.sort(sequence));
9 arr.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]
10 arr.slice(start,end) 切去索引值start到索引值end的数组,不包含end索引的值,返回值是切出来的数组
let arr = [1,2,3,4,5]
console.log(arr.slice(1,3)) // [2,3]
console.log(arr) // [1,2,3,4,5]
11 arr.filter(callback) 过滤数组,返回一个满足要求的数组
var a=[1,2,3,4,5,6,7,8]
var b = a.filter((item)=>{
return item>3
})
console.log(b) [4,5,6,7,8]
12 arr.map(callback) 数组循环
var a=[1,2,3,4,5,6,7,8]
a.map((item)=>{
console.log(item) //依次打印1,2,3,4,5,6,7,8
})
13.es6 去重操作
var a=[1,2,2,3,3,4,4,5,6,7,8]
var b = [...new Set(a)]
console.log(b) [1,2,3,4,5,6,7,8]
14.伪数组转数组
//先看下什么叫伪数组
var object = {
0:'1',
1:'2',
2:'3',
3:'4',
4:'5',
length:5
}
for(var i=0;i<object.length;i++){
console.log(object[i])
}
//依次打印1,2,3,4,5
//伪数组转数组
//方法一:
//Array.from()
var b = Array.from(object)
console.log(b) //["1", "2", "3", "4", "5"]
//方法二:
var c = [].slice.call(object)
console.log(c) //["1", "2", "3", "4", "5"]
//方法三:
var d = Array.prototype.slice.call(object)
console.log(d) //["1", "2", "3", "4", "5"]
15.数组的深拷贝
//浅拷贝方法一:
var arr = [1,2,3,4];
var b = arr;
b.push(5);
console.log(arr) // [1, 2, 3, 4, 5]
//深拷贝方法二:
var arr = [1,2,3,4];
var b = JSON.parse(JSON.stringify(arr))
b.push(5);
console.log(arr) // [1, 2, 3, 4]
console.log(b) // [1, 2, 3, 4, 5]