JavaScript数组的方法

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"]
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值