常用数组方法 一.不会改变原始数组的方法:
即访问方法,下面的这些方法绝对不会改变调用它们的对象的值,只会返回一个新的数组或者返回一个其它的期望值。
1. concat()** 语法:**
JavaScript,defaultvar new_array = old_array.concat(value1[, value2[, ...[, valueN]]])
参数: valueN(可选)
将数组和/或值连接成新数组。如果省略了valueN参数参数,则concat会返回一个它所调用的已存在的数组的浅拷贝
**返回值 **
返回新的数组实例。原始数组/值在连接时保持不变。此外,对于新数组的任何操作(仅当元素不是对象引用时)都不会对原始数组产生影响,反之亦然。
实例:
let obj={a:1} const arr=["a","b",obj]; //obj为对象的引用,原始数组arr同新数组arr2引用相同对象,其更改对于原始数组和新数组是可见的 const arr1=[1,2,3,4]; const arr2=arr1.concat(obj); obj.a=2; console.log(arr2); //['a','b',{a:2},1,2,3,4] console.log(arr); //['a','b',{a:2}] 2.slice()** 语法:**
arr.slice(begin, end)
参数:
***begin(可选) ***
如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取,slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。
如果省略 begin,则 slice 从索引 0 开始。
如果 begin 大于原数组的长度,则会返回空数组。
***end(可选) ***
在该索引处结束提取原数组元素。slice 会提取原数组中索引从 begin 到 end 的所有元素(包含 begin,但不包含 end)。
slice(1,4) 会提取原数组中从第二个元素开始一直到第四个元素的所有元素 (索引为 1, 2, 3的元素)。
如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。 slice(-2,-1) 表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。
如果 end 被省略,则 slice 会一直提取到原数组末尾。
如果 end 大于数组的长度,slice 也会一直提取到原数组末尾.
**返回值 **
slice 不会修改原数组,只会返回一个浅复制了原数组中的元素的一个新数组。拷贝规则同concat()
实例:
var fruits = ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango']; var citrus = fruits.slice(1, 3); // fruits contains ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango'] // citrus contains ['Orange','Lemon'] 3.join()语法:
arr.join([separator])
**参数: ** separator(可选)
指定一个字符串来分隔数组的每个元素。如果需要,将分隔符转换为字符串。如果缺省该值,数组元素用逗号(,)分隔。如果separator是空字符串(""),则所有元素之间都没有任何字符
**返回值 **
将一个数组(或一个类数组对象)的所有元素连接成一个字符串并返回这个字符串。如果数组只有一个项目,那么将返回该项目而不使用分隔符。如果 arr.length 为0,则返回空字符串
实例:
var a = ['Wind', 'Rain', 'Fire']; var myVar1 = a.join(); // myVar1的值变为"Wind,Rain,Fire" var myVar2 = a.join(', '); // myVar2的值变为"Wind, Rain, Fire" var myVar3 = a.join(' + '); // myVar3的值变为"Wind + Rain + Fire" var myVar4 = a.join(''); // myVar4的值变为"WindRainFire" 4.toString()** 语法:**
arr.toString()
**返回值 **
返回一个字符串,表示指定的数组及其元素。
实例:
const array1 = [1, 2, 'a', '1a']; console.log(array1.toString()); // "1,2,a,1a" 5.indexof()** 语法:**
arr.indexOf(searchElement,fromIndex)
参数:
***searchElement ***
要查找的元素
fromIndex(可选)
开始查找的位置。如果该索引值大于或等于数组长度,意味着不会在数组里查找,返回-1。
如果参数中提供的索引值是一个负值,则将其作为数组末尾的一个抵消,即-1表示从最后一个元素开始查找,-2表示从倒数第二个元素开始查找 ,以此类推。
注意:如果参数中提供的索引值是一个负值,并不改变其查找顺序,查找顺序仍然是从前向后查询数组。
如果抵消后的索引值仍小于0,则整个数组都将会被查询。其默认值为0
**返回值 **
返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1
实例:
var array = [2, 5, 9]; array.indexOf(2); // 0 array.indexOf(7); // -1 array.indexOf(9, 2); // 2 array.indexOf(2, -1); // -1 array.indexOf(2, -3); // 0 6.lastIndexOf()** 语法:**
arr.lastIndexOf(searchElement,fromIndex)
参数:
***searchElement ***
要查找的元素
fromIndex(可选)
从此位置开始逆向查找。默认为数组的长度减 1(arr.length - 1),即整个数组都被查找。
如果该值大于或等于数组的长度,则整个数组会被查找。
如果为负值,将其视为从数组末尾向前的偏移。即使该值为负,数组仍然会被从后向前查找。
如果该值为负时,其绝对值大于数组长度,则方法返回 -1,即数组不会被查找。