JS学习--数组(二)--2021-03-18

一、数组元素的添加和删除

1.1 元素添加

添加元素最简单的方法就是:

	//开始是一个空数组
	let a = [];
	//然后向其中添加元素
	a[0] = "zero";
	a[1] = "one";

另一种方式就是使用push()方法在数组末尾增加一个或多个元素:

	//开始是一个空数组
	let a = [];
	//在末尾添加一个元素 a = ["zero"]
	a.push("zero");
	//再添加两个元素.a = ["zero", "one", "two"]
	a.push("one","two");

在数组尾部压入一个元素与给数组a[a.length]赋值是一样的。

1.2 元素删除

可以像删除对象属性一样使用delete运算符来删除数组元素:

	let a = [1,2,3];
	//a在索引1的位置不再有元素
	delete a[1];
	// false--组索引1并未在数组中定义
	1 in a;
	// 3--delete操作并不影响数组长度
	a.length;

二、数组遍历

2.1 用for循环

	//定义数组
	let a = [11,22,33,44,55,66];
	//使用for循环
	for(let i = 0; i < a.length; i++) {
		//打印数组元素
		console.log(a[i]);
	}

上述代码在在嵌套循环或其他性能非常重要的上下文中,可以看到这种基本的数组遍历需要优化,数组的长度应该只查询一次而非每次循环都要查询:

	for(let i = 0, len = a.length; i < len ; i++) {
		//循环体仍然不变
	}

两个字:优雅!

2.2 排除不合法的元素

这些例子假设数组是稠密的,并且所有的元素都是合法数据。否则,使用数组元素之前应该先检测它们。如果想要排除null、undefined和不存在的元素,代码如下:

	//跳过null, undefined和不存在的元素
	for(let i = 0; i < a.length; i++) {
		if (!a[i]) continue;
		//循环体
	}
	//如果只想跳过undefined和不存在的元素,代码如下:
	for(let i = 0; i < a.length; i++) {
		if (a[i] === undefined) continue;
		//循环体
	}
	//只想跳过不存在的元素而仍然要处理存在的undefined元素,代码如下:
	for(let i = 0; i < a.length; i++) {
		if (!(i in a)) continue;
		//循环体
	}
	//还可以使用for/in循环处理稀疏数组。循环每次将一个可枚举的
	//属性名(包括数组下标)赋值给循环变量。不存在的下标将不会遍历到:
	for(let index in a) {
		//循环体
	}

三、多维数组

JavaScript多维数组实现九九乘法表:

	//创建一个多维数组
	let table = new Array(10);	//表格有10行
	for(let i = 0; i < table.length; i++) {
		table[i] = new Array(10);	//每行有10列
	}
	//初始化数组
	for(let row = 0; row < table.length; row++) {
		for(let col = 0; col < table[row].length; col++) {
			table[row][col] = row * col;
		}
	}
	//使用多维数组来查询3*4
	let product = table[3][4];

四、数组方法

当天学习了很多数组相关的方法,这里只记录个别。
数组方法就是Array.prototype(原型)中定义了一些很有用的操作数组的函数

	//1. join() 将数组中所有元素都转化为字符串并连接在一起
	let a = [1,2,3];
	a.join();	// => "1,2,3"
	a.join(",");	// => "1 2 3"
	a.join("");	// => "123"
	let b = new Array(10);	//长度为10的数组
	b.join("-");	// => '---------' 9个连字号组成的字符串
	
	//2. sort() 将数组中的元素排序并返回排序后的数组
	//当不带参数调用sort()时,数组元素以字母表顺序排序
	let a = ["bcbc","chch","akak"];
	a.sort();
	a.join();	// => "akak,baba,chch"
	//为了按照其他方式而非字母表顺序进行数组排序,必须给sort()方法
	//传递一个比较函数。该函数决定了它的两个参数在排好序的数组中的先后顺序。
	let a = [33,55,66,3,444,8888];
	a.sort();	//字母表顺序: 3,33,444,55,66,8888
	a.sort(function(s,t){	//数值排序: 3,33,55,66,444,8888
		return a-b;
	});
	a.sort(function(a,b) {return b-a});	//数值大小相反的顺序

	//3. concat()方法创建并返回一个新数组
	//注意:concat()不会递归扁平化数组的数组
	let a = [1,2,3];
	//返回[1,2,3,4,5]
	a.concat(4,5);
	//返回[1,2,3,4,5]
	a.concat([4,5]);
	//返回[1,2,3,4,5,6,7]
	a.concat([4,5],[6,7]);
	//返回[1,2,3,4,5,[6,7]]
	a.concat(4,[5,[6,7]]);

五、数组类型

给定一个未知的对象,判定它是否为数组通常非常有用。

	Array.isArray([]);  //=> true
	Array.isArray({});  //=> false
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张德帅-001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值