1. arr.push(value1, value2,..., valueN)
往数组的末尾添加一个或多个元素,返回当前被修改后的数组的最新长度,该方法会改变原数组
2. arr.pop()
用于删除数组中最后一个元素,返回被删除的元素值
如果用在一个空数组,返回值是undefined
3. arr.unshift(value1, value2,...,valueN)
将元素添加到数组的开头位置,返回当前被修改后的数组的最新长度
4. arr.shift()
用于删除数组中第一个元素,返回被删除的元素值
如果用在一个空数组,返回值是undefined
5. arr.splice(start[, num, item1, item2,..., itemN])进行删除、添加、替换
(1)删除
- start 删除的起始位置
如果大于arr.length,则按arr.length处理,返回原数组
如果小于0,则从右到左查找对应的其实位置length+(start)
如果小于-arr.length,则按arr.length处理,返回空数组
- num 可选,默认删除到数组的最后一个元素,表示删除个数
如果小于0或NaN,则按0处理,不删除元素,返回原数组
(2)替换
- item1, item2,... 从删除的位置,添加第二个参数以后的内容
(3)添加
如果不删除元素,但是又存在第三个或者3+的参数,就会有添加的功能
(4)返回值是所有被删除的元素所组成的数组,如果没有删除任何元素(添加元素),将返回一个空数组
6. arr.sort(function(a, b){ return a-b;})
对数组进行排序,会影响原数组
如果不提供任何的参数,则根据默认排序规则排序
默认排序规则:根据Unicode排序
如果提供参数(函数),我们可以指定排序的规则
- a
- b
a和b代表两个在比较的值
如果 a-b 的结果
大于0:b 排到 a 的前面
小于0:b 排到 a 的后面
等于0:a 和 b 的位置不变
随机排序
利用Math.random(),返回值是0-1,包含0,但不包含1
7. arr.concat(arr1, arr2,..., arrN)
用于拼接两个或者两个以上的数组,返回一个新数组,并不会改变原有数组的值
8. arr.join(separator)
把数组用separator分隔符拼接成字符串并返回,如果不给参数,默认以都好进行间隔
如果是空数组,则返回空字符串
如果数组只有一个元素,则将元素以字符串形式直接返回
9. arr.reverse()
将数组中的元素倒序,并返回一个新的数组,而且会改变原数组
10 arr.indexOf(searchValue[, fromIndex])
查找arr中是否包含searchValue,如果包含,返回第一次出现searchValue的下标,如果不包含,则返回-1
fromIndex默认值为0
如果fromIndex超出length,则返回-1
如果fromIndex小于0大于-length,则从后往前确认查找的位置length+formIndex
如果fromIndex小于-length,则按0进行处理
11 arr.lastIndexOf(searchValue[, fromIndex])
查找arr中是否包含searchValue,如果包含,返回最后一次出现searchValue的下标,如果不包含,则返回-1
fromIndex默认值为length
如果fromIndex超出length,则按length处理
如果fromIndex小于0大于-length,则从前往后确认查找的位置length-formIndex
如果fromIndex小于-length,则返回-1
12 arr.slice(begin, end)
用于截取数组中的内容,返回一个新数组,并不会改变原有的数组
- begin 截取的起始位置,默认为0
如果大于length,则返回一个空数组
如果小于0大于-length,则从倒数第begin开始到length+begin
如果小于-length,则按0处理
- end 截取的结束位置,默认到数组的结尾
如果小于(从位置上来说)begin,则返回一个空数组
如果是负数(如果负数的绝对值超过length,那么就会得到一个空字符串),那么就说明从倒数end结束
如果超过了length,默认也直到数组的结尾位置
begin是包含在截取范围内的,end是不包含在截取范围内的
可以用来拷贝数组,更改新数组的元素, 而不影响原数组
eg: var arr6 = [{a:10, b:20}, "a"]
var arr7 = arr6.slice();
arr6[1] = "123";
arr6[0].a = "abcde";
console.log(arr6); // [{a:"abcde", b:20}, "123"]
console.log(arr7); // [{a:"abcde", b:20}, "a"]
- 深拷贝:数据拷贝过来后,和原数组之间完全没有任何关系
- 浅拷贝:数据拷贝过来后,里面的第一层的基本类型是没有关系了,但是里面的复杂类型,依旧是有关联(如上例所示)
- 赋址:数据不管是基本类型,还是复杂类型,都和原来的是相关联的。