JavaScript数组

数组

数组(Array),就是将多个元素(通常是同一类型)按一定顺序排列放到一个集合中,那么这个集合我们就称之为数组。

1. 数组的定义

  • 数组是一组有序的数据集合。数组内部可以存放多个数据,不限制数据类型,并且数组的长度可以动态的调整。
  • 创建数组最简单的方式就是数组字面量方式。
  • 数组的字面量:[]
  • 一般将数组字面量赋值给一个变量,方便后期对数组进行操作。
  • 如果存放多个数据,每个数据之间用逗号分隔,最后一个后面不需要加逗号

2. 获取数组元素

  • 数组可以通过一个 index(索引值、下标)去获取对应的某一项的数据,进行下一步操作。
  • index:从 0 开始。
  • 可以通过 index 获取某一项值之后,使用或者更改数组项的值。
  • 调用数据:利用数组变量名后面直接加 [index] 方式
  • 更改数据:arr[index] 调用这一项数据,后面等号赋值更改数据

注意事项:如果索引值超过了数组最大项,相当于这一项没有赋值,内部存储的就是 undefined。

3. 数组的长度

  • 使用方法:变量名.length。console.log(arr.length);
  • 数组最后一项的下标等于数组的 length-1。
  • 获取最后一项的数据时,console.log(arr[arr.length-1]);
  • 数组的长度不是固定不变的,可以发生更改。
  • 增加数组长度:直接给数组 length 属性赋一个大于原来长度的值。赋值方式使用等号赋值。 或者,可以给一个大于最大下标的项直接赋值,也可以强制拉长数组。
  • 缩短数组长度:强制给 length 属性赋值,后面数据被会直接删除,删除是不可逆的

4. 数组遍历

  • 遍历:遍及所有,对数组的每一个元素都访问一次就叫遍历

  • 根据下标在 0 到 arr.length-1 之间,进行 for 循环遍历

    // i是计数器 当索引号使用 arr[i]是数组元素第i个数组元素
    for (var i = 0; i <= arr.length - 1; i++) {
    	console.log(arr[i]);
    }
    // 或者是以下
    for (var i = 0; i < arr.length; i++) {
    	console.log(arr[i]);
    }
    

案例:求一个数组中所有元素的总和及平均值

var arr = [23, 45, 66, 12, 89, 12, 11];
// 累加器 累加数组每一项的和 初始值为0
var sum = 0;
// 遍历数组 将每一项累加到sum里
for (var i = 0; i <= arr.length - 1; i++) {
	sum += arr[i];
}
console.log("这组数字的总和为" + sum);
// 求取平均值 = 总和 / 数组长度
var avg = sum / arr.length;
console.log("这组数字的平均值为" + avg);

案例:求一个数组中的最大值

var arr = [2, 6, 1, 77, 52, 25, 7];
// 声明一个保存最大元素的变量max
// 默认最大值可以取数组中的第一个元素
// 如果数组元素都是负数的情况下 若max = 0 会导致最后的最大值为0
var max = arr[0];
// 遍历数组 把里面每一个数组元素与max相比较
// 因为把第一个值已经赋值给了max 所以从第二个值开始比较即可
for (var i = 1; i <= arr.length - 1; i++) {
	// 若这个数组元素 > max 就把这个数组元素存到max里面
	if (arr[i] > max) {
  		max = arr[i];
	}
}
console.log("该数组中最大值是" + max);

案例:将数组[‘red’, ‘blue’, ‘pink’, 1,11]转换为字符串,并用符号!或其他符号隔开

var arr = ["red", "blue", "pink", 1, 11];
console.log(arr[3]);
// 一个用于存放转换完的字符串str的新变量
var str = "";
// 一个放符号的变量
var sep = "!";
for (var i = 0; i < arr.length; i++) {
  str += arr[i] + sep;
}
console.log(str);

案例:新建一个数组,里面存放100个整数(1~100)

var arr = [];
for (var i = 0; i < 100; i++) {
  arr[i] = i + 1;
}
console.log(arr);

案例:将数组[2, 0, 6, 1, 77, 0, 52, 0, 25, 7]中大于等于10的元素筛选出来,依次放入新数组

var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
var newArr = [];
for (var i = 0; i <= arr.length - 1; i++) {
  if (arr[i] >= 10) {
    // 因为刚开始newArr.length就是0 当存入一个数后会变成1 依此类推
	newArr[newArr.length] = arr[i];
  }
}
console.log(newArr);

案例:删除数组指定元素(数组去重)

var arr = [2, 0, 6, 1, 77, 0, 53, 0, 25];
var newArr = [];
for (var i = 0; i < arr.length; i++) {
  if (arr[i] != 0) {
    newArr[newArr.length] = arr[i];
  }
}
console.log(newArr);

案例:翻转数组

var arr = [1, 33, "red", "pink", 56, 78];
var newArr = [];
for (var i = arr.length - 1; i >= 0; i--) {
  newArr[newArr.length] = arr[i];
}
console.log(newArr);

案例:数组排序(冒泡排序)(若从大到小)

// 观察变化 找出的规律
var arr = [4, 1, 2, 3, 5];
// 外层循环管趟数 最后一个数不用判断了 因为在判断倒数第二个数时已经挪好位置了
for (var i = 0; i <= arr.length - 1; i++) {
	// 里层循环管每一趟的交换次数
    // 一趟确认一个数 数组长度-当前躺数是剩下未确认的数需比较的次数
    // 因为j从0开始 所以还要再减1 或者理解为 arr.length-(i+1)
    for (var j = 0; j <= arr.length - i - 1; j++) {
    	// 内部交换2个变量的值 前面一个和后一个数组元素相比较
     	if (arr[j] < arr[j + 1]) {
     		var temp = arr[j];
     		arr[j] = arr[j + 1];
        	arr[j + 1] = temp;
     	}
    }
}
console.log(arr);
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值