数组

147 阅读3分钟

笔记来源:拉勾教育 - 大前端就业集训营

文章内容:学习过程中的笔记、感悟、和经验

数组

概念

将多个元素(通常是同一类型)按照一定顺序排列到一个集合中,这个集合称为数组,数组的长度可以动态调节

创建数组使用数组字面量[]

一般情况下我们会把一个数组字面量赋值给一个变量,方便后期进行维护和操作,

数组之中如果存在多个数据,使用逗号隔开

// 创建空数组
var arr = [],
// 创建一个非空数组,各项内容和类型不限
  arr2 = [1, 2, true, 'hahahah', [1, 2, 3]]

获取数组数据

数组通过一个index(下标/索引值)获取某一项数据

书写方法数组名[索引值]

注意:

  • 索引值从0开始,也就是说如果要获取数组第一项索引值要使用0,后面依次排序(例如某个数组里面有三个元素,那么这三个元素下标分别是0、1、2)
  • 获取数组某一项后可以修改这一项的值(数组名[索引值] = 赋值)
// 创建空数组
var arr = [],
  // 创建一个非空数组,各项内容和类型不限
  arr2 = [1, 2, true, 'hahahah', [1, 2, 3]];

//获取数组某个索引值的元素
console.log(arr2[0]);   //1
console.log(arr2[2]);   //true
console.log(arr2[4]);   //[1, 2, 3]

//获取数组中没有的项会返回undefined
console.log(arr2[8]);   //undefined

//更改数组内容
arr2[0] = 5;
console.log(arr2[0]);   //5

注意:

  • 如果索引值超过数组的最大索引值,则会返回undefined
  • 可以使用赋值语句更改某一项的内容

数组长度(lingth)

length属性用来记录数组的数据总长度,

书写方法:数组名.length

注意

  • Length和数组最后一项下标存在联系,既数组最后一项的下标为length-1,所以,如果想获取数组最后一项可以使用length-1替换索引值
  • 数组的长度随着内部数据的变化而变化,不是固定不变的
// 创建数组
var arr2 = [1, 2, true, 'hahahah', [1, 2, 3]];

//获取长度 
console.log(arr2.length);   //5
// 获取最后一项
console.log(arr2[arr2.length - 1]);   //[1, 2, 3]

改变数组长度

  • 增加:
    • 直接修改length数字为比现在更大的值,数组长度会被拉长,并且多出来的长度内容为undefined
    • 直接添加一个比最大下标数值还要大的项,也会被拉长,中间会被填充undefined
  • 缩短:
    • 直接修改length为小于原来长度的值,多出来的会被删除掉,并且删除是不可逆的
// 创建数组
var arr2 = [1, 2, true, 'hahahah', [1, 2, 3]];
var arr3 = [1, 2, true, 'hahahah', [1, 2, 3]];
var arr4 = [1, 2, true, 'hahahah', [1, 2, 3]];

// 修改数组长度,直接修改length
arr2.length = 10;
console.log(arr2);   //[1, 2, true, "hahahah",[1, 2, 3], 空 × 5]

// 修改数组长度,添加一个不存在的项
arr3[11] = 1;
console.log(arr3);    //[1, 2, true, "hahahah", [1, 2, 3], 空 × 6, 1]

//缩短数组长度,删除是不可逆的
arr4.length = 2;
console.log(arr4);  //[1, 2]
arr4.length = 5;
console.log(arr4);  //[1, 2, 空 × 3]

数组遍历

遍及所所有数组内容,使用for循环,遍历数组中每一项,在进行一些操作

注意:for循环遍历数组内容下标范围在0-length-1之间

// 创建数组
var arr = [1, 2, true, 'hahahah', [1, 2, 3]];

//输出数组所有项
for (let i = 0; i <= arr.length - 1; i++) {
  console.log(arr[i]);
}

小案例:给每个学生成绩加5分

// 创建数组包含所有学生成绩
var arr = [78, 87, 56, 65, 77];

//将每个学生成绩加5分
for (let i = 0; i < arr.length; i++) {
  arr[i] += 5;
}

//输出新的成绩
console.log(arr);  //[83, 92, 61, 70, 82]

数组应用案例

需求:求一个数组的所有项的和和平均值

// 创建数组
var arr = [12, 34, 56, 36, 25, 76];
// 创建变量接纳和,使用累加器
var sum = 0;
// 遍历数组,求和
for (let i = 0; i < arr.length; i++) {
  sum += arr[i];
}
// 输出和
console.log('该数组和为' + sum);
// 输出平均值(和/数组长度)
console.log('该数组平均值为' + sum / arr.length);