数组基础.

数组 Array

学习目标

  • 为什么要有数组
  • 如何创建数组
  • 如何获取数组中的元素
  • 如何对数组进行遍历
  • 如何给数组新增元素
  • 能够完成冒泡排序案例

为什么学习数组?

之前学习的数据类型,只能存储一个值(比如:Number/String)。如果我们想存储班级中所有学生的成绩,该如何存储?此时就需要用到数组。数组可以将一组相关数据一起存放,并提供方便的访问方式。

数组的概念

所谓数组(Array),就是一组数据的集合。

  • 将多个元素(通常是同一类型)按一定顺序排列放到一个集合中,那么这个集合我们就称之为数组。
  • 数组是一组有序的数据集合。数组内部可以存放多个数据,不限制数据类型,并且数组的长度可以动态的调整。
  • 数组是将一组数据储存在单个变量名下的优雅方式。

创建数组

  • 创建数组并赋值称为数组的初始化
  • 创建数组最简单常用的方式就是数组字面量方式。
    • 数组的字面量:[]
      空数组[];
    • 一般将数组字面量赋值给一个变量,方便后期对数组进行操作。
      var arr = [];
    • 如果存放多个数据,每个数据之间用逗号分隔,最后一个后面不需要加逗号。
      var arr2 = [1, true, false, null, undefined, "haha", [7, 8]];

获取数组元素

  • 存放在数组里的数据就是数组元素
  • 数组可以通过一个 index(索引值/下标)去获取对应的某一项的数据,进行下一步操作。
  • index:从 0 开始,按照整数排序往后顺序排序,例如 0,1,2,3……
  • 通过 index 获取某一项值之后,可以使用或者更改数组项的值。
  • 调用数据:利用数组变量名后面直接加 [index] 方式。
    arr[index]

打印下标为0的项
console.log(arr2[0]);

  • 注意:如果索引值超过了数组最大项,相当于这一项没有赋值,内部存储的就是 undefined。
var arr = [1, true, false, null, undefined, "haha", [7, 8]];
//没有第七项,打印出的结果为undefined
console.log(arr2[7]);
  • 更改数据:arr[index] 调用这一项数据,后面等号赋值更改数据。
var arr2 = [1, true, false, null, undefined, "haha", [7, 8]];
arr2[4]=5;
console.log(arr2);
//此时数组中的undefined变为5
  • 注意:如果直接给数组名字赋值,则会覆盖掉以前的数据
    arr="数组赋值"

数组的长度

  • 数组有一个 length 的属性,记录的是数组的数据的总长度。
  • 使用方法:数组名.length
var arr2 = [1, true, false, null, undefined, "haha", [7, 8]];
console.log(arr.length);
  • 数组的长度与数组最后一项的下标存在关系,最后一项的下标等于数组的 length-1。
  • 获取最后一项的数据时,可以这样书写:
    console.log(arr[arr.length-1]);

新增或缩减数组元素

数组的长度不是固定不变的,可以发生更改。

  1. 增加数组长度:
    • 直接给数组 length 属性赋一个大于原来长度的值。赋值方式使用等号赋值。空数组内容打印出来是undefined。
      arr2.length = 12;
    • 或者,可以给一个大于最大下标的项直接赋值,也可以强制拉长数组。前面没有内容的数组项,在控制台中显示为empty*3(几个空项就乘几),他们的内容打印出来都是undefined。
      arr2[10]=10;
  2. 缩短数组长度:强制给 length 属性赋值,后面数据被会直接删除,删除是不可逆的。
    arr2.length = 5;

注意:如果直接给数组名字赋值,则会覆盖掉以前的数据

数组遍历

  • 遍历:对数组的每一个元素都访问一次就叫遍历。利用 for 循环,将数组中的每一项单独拿出来,进行一些操作。
  • 根据下标在 0 到 arr.length-1 之间,进行 for 循环遍历。
var arr = [45, 56, 76, 88, 89, 90, 100, 34, 56];
for (var i = 0; i <= arr.length-1; i++) {
    console.log(arr[i]);
}
  • 给每一项加5
for (var i = 0; i < arr.length; i++) {
  // 获取每一项值,等号赋新值
  arr[i] += 5;
  console.log(arr[i]);
}

数组应用案例

  • 求一组数中的所有数的和以及平均值。
var arr = [45, 56, 76, 88, 89, 90, 100, 34, 56];
        // 累加器,积累数组每一项的和,初始值为0
        var sum = 0;
        // 遍历数组,将每一项累加到sum里
        for (var i = 0; i <= arr.length - 1; i++) {
            sum += arr[i];
        }
        // 平均值等于总和除以人数,总人数为数组长度
        var avg = sum / arr.length;
        console.log("这组成绩总和为" + sum,"这班级平均成绩为" + avg);
        //console.log想要输出多个值用逗号分隔
        
  • 求数组中的最大值
var arr = [2, 6, 1, 77, 52, 25, 7];
var max = arr[0];
for (var i = 1; i < arr.length; i++) {
    if (arr[i] > max) {
        max = arr[i]
    }
}
console.log(max);
  • 将数组["red","green","blue","pink"]转换为字符串,并且用|符号分隔
var arr = ["red", "green", "blue", "pink"];
var str = "";
var sep = "|";//sep分隔符的缩写
for (var i = 0; i < arr.length; i++) {
    str += arr[i] + sep;
}
console.log(str);
  • 新建数组,里面存放十个整数
var arr = [];
for (i = 0; i < 10; i++) {
    arr[i] = i + 1;
}
console.log(arr);
  • 将数组[2, 0, 6, 1, 77, 0, 52, 0, 25, 7]大于十的元素筛选出来,放入新的数组。

方法一:

var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
var newArr = [];
var j = 0;
for (i = 0; i < arr.length; i++) {
    if (arr[i] > 10) {
        newArr[j] = arr[i];
        j++;
    }
}
console.log(newArr);

方法二:

var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
var newArr = [];
for (i = 0; i < arr.length; i++) {
    if (arr[i] > 10) {
        newArr[newArr.length] = arr[i];
    }
}
console.log(newArr);
  • 将数组[2, 0, 6, 1, 77, 0, 52, 0, 25, 7]中的0去掉后,形成一个不包含0的新数组。
var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
var newArr = [];
for (var i = 0; i < arr.length; i++) {
    if (arr[i] != 0) {
        newArr[newArr.length] = arr[i];
    }
}
console.log(newArr);
  • 将数组[“red”, “green”, “blue”, “pink”, “purple”]的内容反过来存放
var arr = ["red", "green", "blue", 
"pink", "purple"];
var newArr = [];
for (i = arr.length - 1; i >= 0; 
i--) {
    newArr[newArr.length] = arr[i]
}
  • 数组排序(冒泡排序)
    冒泡排序是一种算法,把一系列的数据按照从小到大或从大到小的顺序进行排列。
  • 把[5, 4, 3, 2, 1]从小到大排序
var arr = [5, 4, 3, 2, 1];
//外层循环控制趟数
for (var i = 0; i <= arr.length - 
1; i++) {
    //里层循环控制每趟的交换次数
    for (var j = 0; j <= arr.length 
- 1 - i; j++) {
        //前一个元素与后一个元素相比较
        if (arr[j] > arr[j + 1]) {
            //交换变量
            var temp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = temp;
        }
    }
}
console.log(arr);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值