1.toString()
定义一个数组arr,通过toString()方法将其转为以逗号分隔的字符串。
var arr = ["a","b","c"];
var str = arr.toString(); // str = "a,b,c"
2.join()
通过join()方法可以按照转为指定分隔符的字符串,
参数:
可使用任意字符
join()括号内无参数时,以默认分隔符(",")分隔。
var str2 = arr.join("-"); //str2 = "a-b-c"
3.concat()
合并数组,不改变当前数组的值,返回值为数组,
参数:
一个或多个数组,传多个数组时用逗号分割。
var arr2 = ["d","e","f"];
console.log(arr.concat(arr2)); //["a","b","c","d","e","f"]
console.log(arr); //["a","b","c"]
var newArr = arr.concat(arr2);
console.log(newArr); //["a","b","c","d","e","f"]
*当concat()无参时,仅复制当前数组的值,但和arr = arr2
直接赋值不同,concat复制出来的数组,新数组值的改变不会反应到原数组(深拷贝),但当复制多维数组时,又会变为浅拷贝。
var arr = [1,2,3];
var arr2 = arr; //arr2 = [1,2,3]
arr2[0] = 5
console.log(arr2); //arr = [5,2,3]
console.log(arr); //arr2 = [5,2,3]数组的浅拷贝,新数组的改变会影响到原数组
4.slice()
对于array对象的slice函数,返回一个数组的一段。(仍为数组)
array.slice(start, [end])
参数:
array 必选项。一个 Array 对象。
start 必选项。array 中所指定的部分的开始元素是从零开始计算的下标。
end可选项。array 中所指定的部分的结束元素是从零开始计算的下标。
说明:
slice 方法返回一个 Array 对象,其中包含了 array 的指定部分。
slice 方法一直复制到 end 所指定的元素,但是不包括该元素。
如果 start 为负,将它作为 length + start处理,此处 length 为数组的长度。
如果 end 为负,就将它作为 length + end 处理,此处 length 为数组的长度。
如果省略 end ,那么 slice 方法将一直复制到 array 的结尾。
如果 end 出现在 start 之前,不复制任何元素到新数组中。
注意:
slice()的 start 和 end 参数取值区间为前闭后开[start,end)
和C系语言的一般取值区间(前开后闭) (start,end] 相反。
var arr = [1,2,3];
var arr2 = arr1.slice(0);
arr2[1] = "9";
console.log(arr2); //[1,2,9]
console.log(arr); //[1,2,3]
concat() 和 slice() 的局限性
当他们对多维数组进行拷贝时,当新数组的值改变时,原数组的值也会同时发生改变
var arr = [[1,2,3,],"a","b"];
var arr2 = arr.slice(0);
arr2[0][0] = 9;
console.log(arr2); //arr2 = [[9,2,3,],"a","b"]
console.log(arr); //arr = [[9,2,3,],"a","b"]
同理 concat() 也是这个结果
var arr = [[1,2,3,],"a","b"];
var arr2 = arr.concat(arr);
arr2[0][0] = 9;
console.log(arr2); //arr2 = [[9,2,3,],"a","b"]
console.log(arr); //arr = [[9,2,3,],"a","b"]
从上面两个例子可以看出,由于数组内部属性值为引用对象,因此使用slice和concat对对象数组的拷贝,整个拷贝还是浅拷贝,拷贝之后数组各个值的指针还是指向相同的存储地址。
因此,slice和concat这两个方法,仅适用于对不包含引用对象的一维数组的深拷贝
5.indexOf()
返回要查找的项在数组中首次出现的位置。
如果未找到则返回-1。
多个元素相同的情况下,返回该元素首次出现的索引值。
var arr = [1,2,3,3];
var index = arr.indexOf(1); // index = 0
var index2 = arr.indexOf(4); // index2 = -1
var index3 = arr.indexOf(3); // index3 = 2
6.splice()
array.splice(index,howmany,item1,…,itemX) 该方法会改变原数组的值。
index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处定位置。
howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。
item1, …, itemX 可选。向数组添加的新项目。
返回值:
数组 包含被删除项目的新数组,如果有的话。
var arr = ["George","John","Thomas","James","Adrew","Martin"];
console.log(arr); //["George","John","Thomas","James","Adrew","Martin"]
arr.splice(2,0,"William");
console.log(arr); //["George","John","William","Thomas","James","Adrew","Martin"]