说实话,一般数组操作我都是看一看就算了,觉得很简单,但是真要我自己写,我才发现还真的是蛮难的,老是记不住什么返回值啊,是不是在原数组修改啊?所以我还是记下来吧:
SHIFT()
删除数组的第一个元素,返回的是删除的值,修改了原数组
arr = [1,2,3,4,5] //[1, 2, 3, 4, 5]
arr.shift() //1
arr //[2, 3, 4, 5]
UNSHIFT()
在数组的头部加上新的元素,返回的是数组的长度,修改了原数组
arr = [1,2,3,4,6] //[1, 2, 3, 4, 6]
arr.unshift(0,1,2,3) //9
arr //[0, 1, 2, 3, 1, 2, 3, 4, 6]
POP()
删除数组尾部的元素,返回被删除的值,修改了原数组
arr = [1,2,3,4,5] //[1, 2, 3, 4, 5]
arr.pop() //5
arr //[1, 2, 3, 4]
PUSH()
在数组的尾部添加新的元素,返回数组的长度,修改了原数组
arr = [1,2,3,4,5] //[1, 2, 3, 4, 5]
arr.push(6,7,8) //8
arr //[1, 2, 3, 4, 5, 6, 7, 8]
CONCAT()
把两个数组连接起来,返回的是连接后的数组,没有修改原数组。
arr1 = [1,2,3]
arr2 = [4,5,6]
arr1.concat(arr2) //[1, 2, 3, 4, 5, 6]
arr1 //[1, 2, 3]
arr2 //[4, 5, 6]
SLICE()
截取元素到指定位置之前,返回被截取的数组,不修改原数组
arr = [1,2,3,4,5]
arr.slice(0,2) //[1, 2]
arr //[1, 2, 3, 4, 5]
SPLICE()
删除指定个数元素,在指定位置添加新的元素,返回的是被删除的元素,并且修改了原数组。
arr = [1,2,3,4,5] //[1, 2, 3, 4, 5]
arr.splice(1,2,"2","3") //[2, 3]
arr //[1, "2", "3", 4, 5]
SORT()
排序数组,默认是字符排序,返回排序后的数组,并修改了原数组
arr = [1,22,3,44,5]
arr.sort() //[1, 22, 3, 44, 5]
arr //[1, 22, 3, 44, 5]
arr.sort(function(a,b){return a-b}) //[1, 3, 5, 22, 44]
arr //[1, 3, 5, 22, 44]
JOIN()
用指定的字符连接数组,返回的是连接的字符串,没有修改原数组
arr = [1,2,3,4,5]
arr.join("&") "1&2&3&4&5"
arr [1, 2, 3, 4, 5]
与之相反的是split()函数,分离字符串变为数组,没有修改字符串:
string = "1**2**3**4**5"
string.split("**") //["1", "2", "3", "4", "5"]
string //"1**2**3**4**5"
REVERSE()
颠倒数组的排序,返回的是颠倒后的数组,并且改变了原数组
arr = [1,2,3,4,5]
arr.reverse() //[5, 4, 3, 2, 1]
arr //[5, 4, 3, 2, 1]
总结
- 除了join(),concat(),slice(),其他的方法都修改了原数组。
- push(),unshift() 返回的是修改后的数组长度。
- pop(),shift(),splice() 返回的是删除的元素。
- 其他返回值都是修改后的结果