No.010 JavaScript中数组的方法

(以下所有内容仅用以记录学习过程中的个人理解,如有错误欢迎指出)

1. 创建数组的方法

1.1 使用字面量

var arr1 = []; //创建一个空数组
var arr2 = [10]; // 创建一个长度为1的数组
var arr3 = ["abc","xyz","yes"]; // 创建一个包含3个字符串的数组

1.2 使用Array构造函数

与使用字面量相比,区别最大的就是指定一个数字为参数的arr2和arr5。

前者的参数与相关,后者的参数与索引相关。

var arr4 = new Array(); //创建一个空数组
var arr5 = new Array(10); // 创建一个长度为10的数组
var arr6 = new Array("abc","xyz","yes"); // 创建一个包含3个字符串的数组

2. 数组的常用方法

2.1 push()和pop()

push() 可以向数组末尾添加复数个元素,并返回新数组的长度

pop() 可以删除数组的最后一个元素,并返回删除的元素

var arr = ["周一","周二","周三"];

var length = arr.push("周四","周五");
console.log(length); //arr的长度为3+2=5
console.log(arr); //["周一","周二","周三","周四","周五"]

var result = arr.pop();
console.log(result); //删除的是"周五"
console.log(arr); //["周一","周二","周三","周四"]

2.2 shift()和unshift()

这两个方法与pop/push相对应,一个是对末尾操作,一个是对开头操作。

shift() 可以删除数组的第一个元素,并返回删除的元素

unshift() 可以向数组开头添加复数个元素,并返回新数组的长度

var arr = ["周一","周二","周三"];

var length = arr.unshift("周四","周五");
console.log(length); //arr的长度为3+2=5
console.log(arr); //["周四","周五","周一","周二","周三"]

var result = arr.shift();
console.log(result); //删除的是"周四"
console.log(arr); //["周五","周一","周二","周三"]

2.3 slice()和splice()

slice() 可以从数组中返回选定元素,不改变原数组。

两个参数分别指定开始索引结束索引,然后返回从开始索引(包括)到结束索引(不包括)之间的元素,即:

..., { 开始, ..., ..., } 结束, ...

测试用例如下:

  1. 一个参数,以此为开始索引,一直取到最后作为子数组;
  2. 两个正参,取从开始索引(包括)到结束索引(不包括)的子数组;
  3. 一正一负,取从开始索引(包括)到倒数结束索引(不包括)的子数组;
  4. 两个负参,取从倒数开始索引(包括)到倒数结束索引(不包括)的子数组;

参数为负数时,可以视作从后往前倒数,也可以加上数组长度后再从前往后正数

var arr = ["周一","周二","周三","周四","周五","周六","周日"];
console.log(arr); //["周一","周二","周三","周四","周五","周六","周日"]

var result1 = arr.slice(1);
var result2 = arr.slice(1,4);
var result3 = arr.slice(1,-2);
var result4 = arr.slice(-4,-1);
console.log(result1); //["周二","周三","周四","周五","周六","周日"]
console.log(result2); //["周二","周三","周四"]
console.log(result3); //["周二","周三","周四","周五"]
console.log(result4); //["周四","周五","周六"]

splice() 可以从数组中删除选定元素,会改变原数组,同时返回删除元素

它的参数,第一个表示开始索引,第二个表示删除数量,第三个及以后表示插入的元素

根据用法可以实现删除、插入和替换的功能。

测试用例如下:

  1. 删除:如arr.splice(0,3),即删除从索引0开始的三个元素;
  2. 插入:如arr.splice(1,0,“周六”,“周日”),即在索引1后插入两个元素"周六"和"周日";
  3. 替换:如arr.splice(1,1,“周一”,“周二”),即把从索引1开始的两个元素,替换成两个元素"周一"和"周二"。
var arr = ["周一","周二","周三","周四","周五"];

var result1 = arr.splice(0,2);
console.log(arr); //["周三","周四","周五"]
console.log(result1); //["周一","周二"]

var result2 = arr.splice(1,0,"周六","周日");
console.log(arr); // ["周三","周六","周日","周四","周五"]
console.log(result2); //[]

var result3 = arr.splice(1,2,"周一","周二");
console.log(arr); // ["周三","周一","周二","周四","周五"]
console.log(result3); //["周六","周日"]

2.4 join()

join() 可以将数组转换为字符串,并返回生成的字符串,不改变原数组。

测试用例如下:

  1. 不设置参数,默认使用 , 作为连接符串连数组项;
  2. 设置参数为空串,直接串连数组项;
  3. 设置参数为字符,使用字符串连数组项。
var arr = ["周一","周二","周三","周四"];

console.log(arr.join()); //周一,周二,周三,周四
console.log(arr.join("")); //周一周二周三周四
console.log(arr.join("&")); //周一&周二&周三&周四

2.5 sort()

sort() 可以用来对数组进行排序,直接修改原数组,并返回修改后的数组

默认会调用每个数组项的toString()转型方法以比较得到的字符串,按照Unicode编码进行排序,对数值也一样。

var arr1 = ["c", "d", "b", "a"];
console.log(arr1.sort()); //["a", "b", "c", "d"]
var arr2 = [32, 15, 9, 51, 24];
console.log(arr2.sort()); //[15, 24, 32, 51, 9]
console.log(arr2); //[15, 24, 32, 51, 9]

我们可以自己指定排序的规则,通过在sort()中添加回调函数作为参数即可实现,逆序还是顺序输出可以自由指定。

function compare(a, b) {
	if (a < b) {
		return -1; //浏览器会根据回调函数返回值决定排序
	} else if (a > b) {
		return 1; //当>0时,交换位置,当<=0时,位置不变
	} else {
		return 0;
	}
}
var arr = [32, 15, 9, 51, 24];
console.log(arr.sort(compare)); //[9, 15, 24, 32, 51]

2.6 reverse()

reverse() 可以用来反转数组中项的顺序,直接修改原数组,并返回修改后的数组

var arr = ["周一","周二","周三","周四"];

console.log(arr.reverse()); //["周四", "周三", "周二", "周一"]
console.log(arr); //["周四", "周三", "周二", "周一"]

2.7 concat()

concat() 可以用来连接复数个数组,并返回新的数组,不改变原数组。

测试用例如下:

  1. 参数为非数组,将参数作为每项的值添加到原数组后;
  2. 参数中有数组,将数组中的每一项添加到原数组后;
  3. 参数为二维数组,同上,则将第二维数组也作为一项添加到原数组后。
var arr1 = ["周一","周二"];
var arr2 = ["周三","周四"];

var result1 = arr1.concat(arr2, "周五", "周六"); //参数为非数组
console.log(result1); //["周一", "周二", "周三", "周四", "周五", "周六"]
var result2 = arr1.concat(arr2, ["周五", "周六", "周日"]); //参数中有数组
console.log(result2); //["周一", "周二", "周三", "周四", "周五", "周六", "周日"]
var result3 = arr1.concat([arr2, ["周五", "周六"]]); //参数为二维数组
console.log(result3); //["周一", "周二", Array(2), Array(2)]

2.8 forEach()

forEach() 用来遍历数组,它需要以一个函数作为参数(这个函数由我们创建但不由我们调用,称之为回调函数)。

它的三个参数分别是“正在遍历的元素,正在遍历的元素索引,正在遍历的元素数组”。

var arr = ["周一","周二","周三","周四","周五"];
arr.forEach(function(x, index, Arr){
	console.log(x + ", " + index + ", " + (Arr === arr));
});
/*	输出为:
	周一, 0, true
	周二, 1, true
	周三, 2, true
	周四, 3, true
	周五, 4, true
*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值