[4]数组API[3]
Accessor Methods
1 这部分将要介绍的API主要是以下几个:
Array.prototype.concat()
Array.prototype.join()
Array.prototype.slice()
Array.prototype.toString()
Array.prototype.indexOf()
Array.prototype.lastIndexOf()
*上面列举的API都不会修改原来的数组
Array.prototype.concat
由原来的数组和提供的参数组成一个新的数组,并返回。
语法:var newArr = oldArr.concat([element1, element2, element3, …, elementN]);
说明:1 concat()函数并不会改变原来数组中的元素,但是会返回一个新的数组。
2 对于数组中含有对象引用,concat()函数只是进行浅复制(shallow copy),即新数组和原来数组都是指向同一个对象。也就是说,一旦指向的对象被修改,则原来数组和新数组中相应的元素都会发生变化。
3 对于字符串和数值则是直接复制到新数组中。
1 | var alpha = ['a', 'b', 'c'], |
Array.prototype.join()
该方法将数组转换成字符串,并返回该字符串。
语法:arr.join([separator=’,’])
separator: 分隔符是可选的,当没有传入分隔符的时候则数组返回的字符串中每个元素使用逗号, 进行分开;如果有传入分隔符,则按照分隔符分开。
1 | var a = ['Wind', 'Rain', 'Fire']; |
Array.prototype.slice()
该方法返回一个新的数组,新的数组是原来数组的部分浅复制(shadllow copy)。
语法:arr.slice([startIndex[, endIndex]])
startIndex: 当没有传入该参数则默认为0;如果传入的是负数,则加上数组长度;
endIndex: 当没有传入该参数则默认是数组的长度(arr.length);如果传入的是负数,则加上数组的长度
需要注意的是截取的数组中不包括endIndex位置处的元素,即从startIndex到endIndex-1
对于对象引用,跟Array.prototype.concat()函数一样
1 | var fruits = ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango']; |
Array.prototype.toString()
将数组组成一个字符串,并返回字符串。
语法:arr.toString()
与arr.join();得到的字符串一样
1 | var fruits = ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango']; |
Array.prototype.indexOf()
该方法从数组(由前往后,即从0到arr.length-1顺序)找查找某个元素,如果能找到则返回第一个相同元素在数组中的位置;如果没能找到则返回-1
语法:arr.indexOf(searchElement[, fromIndex = 0])
searchElement: 要在数组中查找的元素
fromIndex: 从某个位置开始查找,如果没有该参数则默认为0;如果fromIndex大于或者等于数组的长度,则直接返回-1;如果fromIndex小于0,则加上数组的长度,从结果值的位置开始查找,如果结果值还是小于0,则是整个数组查找。
1 | var array = [2, 5, 9]; |
1 | //找到数组中某个元素的所有位置 |
indexOf()只在IE9及其以上支持,所以对于低版本的IE需要先实现indexOf()函数,如下:
1 | if(!Array.prototype.indexOf){ |
Array.prototype.lastIndexOf()
从数组中查找指定的元素,如果存在则返回该元素第一次出现在数组中的位置,否则返回-1。需要注意的是查找的方向是从数组尾部往前,即arr.length到0
语法:arr.lastIndexOf(searchElement[, fromIndex = arr.length - 1])
searchElement: 要查找的值
fromIndex: 如果没有传入该参数则默认为arr.length数组长度;如果传入的数值大于或等于数组的长度,则对整个数组都进行查找;如果传入的是负数,则加上数组的长度,从结果值处开始查找,如果结果值还是负数则直接返回-1;需要注意的是对于有传入fromIndex,是从fromIndex处开始往前查找
1 | var array = [2, 5, 9, 2]; |