JavaScript(3)

156 阅读5分钟

数组

目录

JavaScript数组基础语法
定义、使用数组
数组数据的增删改查
JavaScript数组的常见应用
JavaScript数据的常见api
JavaScript二维数组

JavaScript数组

概念

官方:数组是指一堆有序数据的集合。即数组能够处理多个数据,并保持一定的顺序。
数组是多个数据的“仓库”。一个数组可以保存并管理多个数据。数组的保存顺序是根据下标来决定的。

数组的定义及使用

定义
1.空的数组
var 数组变量名 = []; //推荐
var 数组变量名 = new Array();
2.带有默认数据的数组
var 数组变量名 = [数据1,数据2,数据n];
var 数组变量名 = new Array(数据1,数据2,数据n);

下标

概念:本质是一个数字。每个数组中的数据都有一个下标。下标决定了该数据在数组中的位置。同时我们也是利用下标来对数据进行后续的处理。
原理:下标从0开始。下标为0指的是第一个数据,即数组中从左往右的第一个。后续数据的下标依次递增。第二个数据的下标为1,第三个数据的下标为2,第i个数据的下标为i-1。最后一个数据的下标为length-1。

数组的长度

数组的长度指的是数组中有几个数据
数组变量名.length

数组的基本应用

示例数组
var source = [59,45,73,89,61];

获取指定下标的数据

数组变量名[下标]

例如:获取下标为0的数据
var s = scores[0];
var data = scores[5];
console.log(s); //59
console.log(data); //undefined

修改指定下标的数据

数组变量名[下标] = 新数据;
例子:将下标为0的数据改为60
scores[0] = 60;

删除数组末尾的数据(只能删除数组最后一个数据)

数组变量名.length--;
例子:删除最后一个数据
scores.length--;
scores.length=0; //清空数组

在数组末尾添加数据

数组变量名[新下标] = 新数据
数组变量名[数组.length] = 新数据
例子:数组末尾添加新成绩 67
scores[5] = 67;
scores[scores.length] = 67;

获取数组中的每个数据(数组的遍历)

scores[0]
scores[1]
scores[2]
scores[3]
scores[4]
...
scores[scores.length-1]
用for循环完成:
for(var i=0;i<数组变量名.length;i++) {
    数组变量名[i]
    }
例子:
for(var i=0;i<scores.length;i++) {
    scores[i]
    }

数组常见应用

//数组最大z最小值
var arr = [3,4,2,9,7,6];
var max = arr[0];
var min = arr[0];
for(var i = 0;i<arr.length;i++) {
    if(max <arr[i]) {
        max = arr[i];
        }
    if(min > arr[i]) {
        min = arr[i];
        }
    }
console.log(max);
console.log(min);
//数组的倒序存放
var arr = [3,4,2,9,7,6];
var newArr =[];
for(var i=arr.length-1;i>=0;i--) {
        newArr[newArr.length] = arr[i];
        }
console.log(newArr);
//合并数组
var arr1 = [1,2,3,4];
var arr2 = [5,6,7,8];
var newArr = [];
//将arr1的数据加入其中
for(var i=0;i<arr1.length;i++) {
    newArr[newArr.length] = arr1[i];
    }
//将arr2的数据加入其中
for(var  j=0;j<arr2.length;j++) {
    newArr[newArr.length] = arr2[j];
    }
console.log(newArr);

数组常见API

API概念

应用编程接口(application programming interfac)。指的编程语言已经写好的代码,开发人员直接可以使用,能够解决编程过程中遇到的常见的操作。
JavaScript针对数组提供了大量的api来简化对数组的常规操作。
每个api本质是一个内置函数。
已经用过的api:Math.random、Number()、parseInt()、parseFloat()等

数组相关API(ES3)

push:追加
向数组批量追加数据
数组变量名.push(数据1,数据2,数据n);追加n个数据

pop:删除末尾数据

删除最后一个数据,并可以得到被删除的数据
var 变量名 = 数组变量名.pop();

unshift:开头添加
shift:删除开头的数据

unshift&shift
数组变量名.shift();删除开头的第一个数据
数组变量名.unshift(数据1,数据2,数据n);开头添加多个数据

join:拼接成字符串

将数组转为字符串
join需要提供一个字符,表示数据和数据之间的分割符号。默认为逗号。原数组没有影响
var 字符串变量名 = 数组变量名.join("分割符号")

splice:数组指定位置的插入和删除

数组变量名.splice(开始插入或删除的下标,删除的数量,要添加的数据1,要添加的数据2,要添加的数据n);

slice:获取数组的一部分

获取数组中的部分数据,得到一个新数组
var 新数组变量名 = 数组变量名.slice(开始下标,结束下标);

拿到的部分数据是不包含结束下标的
如果是从开始下标一直到数组结束的话,可以只写开始下标,结束下标可以省略不写

indexOf:获取数据第一次出现的下标
lastIndexOf:获取数据最后一次出现下标

indexOf & lastIndexOf
indexOf获取的是某数据在数组中第一次出现的下标,如果数组没有该数据,得到-1
lastIndexOf获取的是某数据在数组中最后一次出现的下标。如果数组没有该数据,得到-1
数组变量名.indexOf(某数据);
数组变量名.lastIndexOf(某数据);

应用:判断数据是否重复出现在数组中
indexOf和lastIndexOf的下标不相等,则重复出现

sort:数组排序

对原数组进行处理
(1)默认排序
数组变量名.sort();
(2)自定义排序
数组变量名.sort((num1,num2)=>{
    排序的规则代码
    });
例子:
(1)按照自然顺序排序(0-9a-z、A-Z)
arr.sort();
(2)针对数字数组:从小到大
arr.sort((a,b)=>a-b);
(3)针对数字数组:从大到小
arr.sort((a,b)=>b-a);
(4)数组随机排序
arr.sort(()=>Math.random()-0.5);

二维数组

概念
一维数组:即一个数组里,只存放基本类型的数据
var arr1 = [1,2,3,4,5];
var arr2 = [1,2,3,'starnight',true];

二维数组:即一个数组里,只存放多个一维数组

var student1 = ['xw','22','nv'];
var student2 = ['starnight','23','nv'];
var student3 = ['zyy','24','nv'];
//定义一个数组,有3个默认数组---二维数组
var students = [student1,student2,student3];

二维数组的基本操作

根据下标来获取数据
数组变量名[下标]

根据下标来修改数据

数组变量名[下标] = 新数据

删除末尾的数据

数组变量名.length--;
数组变量名.pop();

在末尾添加数据

数组变量名[数组变量名.length] = 新数据;
数组变量名.push();

获取数组的长度

数组变量名.length;

数组的遍历

for(var i=0;i<student.length;i++) {
    student[i];
    }