1.什么是数组?
数组:(Array)是一种数据类型,属于引用数据类型。
作用:在单个变量名下存储多个数据
2.声明语法
let 数组名 =[数据1,数据2......];
注意事项:
数组是按照顺序保存(是有序的),所以,每一个数据都有自己的编号。
编号从0开始,数据的编号经常称为索引或下标。
数组可以存储任意类型的数据。
3.数组元素取值
数组名[索引];
<script>//创建数组- 初始化数组let names =['张三','李四','王五'];//获取数组元素alert(names[0]);</script>
4.遍历数组
把数组中每个数据都访问到。
使用for循环遍历数组
数组的长度:通过数组.length属性获取。
<script>//创建数组- 初始化数组let names =['张三','李四','王五'];//获取数组元素// alert(names[0]);for(let i =0;i<names.length;i++){alert(names[i]);}</script>
5.demo 求数据的和和平均数,最大值和最小值
<script>let arr = [15, 20, 23, 22];let sum = 0;let maxNum = arr[0];let mixNum = arr[0];//如果要比较大小,可以不从0开始,重复比较了,但是这里笔者写在一起了for (let i = 0; i < arr.length; i++) {sum += arr[i];if (arr[i] < mixNum) {mixNum = arr[i];}if (arr[i] > maxNum) {maxNum = arr[i];}}console.log("数组的和:" + sum);console.log("数组的平均数:" + sum / arr.length);console.log("数组的最大值:" + maxNum);console.log("数组的最小值:" + mixNum);</script>
6.操作数组-增删改查
数组的本质就是数据集合,增删改查。
查询语法:
数组[索引];
如果查询不到就会返回undefined
修改数组元素
数组[索引] = 新值;
返回值:如果下标不存在,则是新增加一个元素,并且修改数组的长度。(这样做尽量避免)
新增元素
方法一:数组.push(新增元素);
作用:将一个或者多个元素添加到数组的末尾。
返回值:该数组的新长度,会修改原数组
<script>//数组元素的新增let names =['张三','李四','王五'];//方法一:pushnames.push('赵六');names.push('姚明','刘翔');console.log(names);
//['张三', '李四', '王五', '赵六', '姚明', '刘翔']</script>
方法二:数组.unshift(新增数据);
作用:将一个或者多个元素添加到数组的开头。
返回值:该数组的新长度,会修改原数组
<script>//数组元素的新增let names =['张三','李四','王五'];//省略方法一;。。。//方法二:unshiftnames.unshift('张飞');names.unshift('刘备','关羽');console.log(names);
//['刘备', '关羽', '张飞', '张三', '李四', '王五', '赵六', '姚明', '刘翔']</script>
删除元素
方法一:数组.pop();
作用:从数组中删除最后一个元素,修改原数组
返回值:该元素的值
方法二:数组.shift();
作用:从数组中删除第一个元素,修改原数组
返回值:该元素的值。
//数组元素的删除//方法一:数组名.pop();names.pop();console.log(names);//方法二:数组名.shift();names.shift();console.log(names);
数组.splice()方法 可以添加也可以删除数组元素。
说明:可以从指定位置删除或者增加数组的数组元素,注意它修改原数组。
做删除使用:splice(start,deleteCount);
返回被删除的元素。
start:起始位置,指定修改的开始位置(从0计数)
deleteCount:删除个数,表示要移除的数组元素的个数,可选的。如果省略则默认从指定的其实位置删除到最后。
做增加使用:splice(start,deleteCount,item1....);
<script>let names =['张三','李四','王五'];//做删除使用names.splice(0,2);console.log(names);//做增加使用names.splice(1,0,'赵六','老七');console.log(names);</script>
7.demo 数组筛选
需求:将数组[10,23,5,12,84,65,11,12,36,0]中大于等于10的元素选出来,放入新数组中。
<script>let arr = [10, 23, 5, 12, 84, 65, 11, 12, 36, 0];let newArr = [];for (let i = 0; i < arr.length; i++) {if(arr[i]>=10){newArr.push(arr[i]);}}console.log(newArr);</script>
需求:将数组[10,0,23,0,5,12,0,84,65,11,12,36,0]进行筛选,形成一个不包含0的新数组。
<script>let arr = [10,0,23,0,5,12,0,84,65,11,12,36,0];let newArr =[];for(let i=0;i<arr.length;i++){if(arr[i]!==0){newArr.push(arr[i]);}}console.log(newArr);</script>
8.数组排序
数组.sort();方法可以排序
语法:数组.sort();会修改原数组
<script>let arr = [15, 2, 65, 21, 333, 57, 1, 25, 69];//升序排列arr.sort(function(a,b){return a-b;});console.log(arr);//降序排列arr.sort(function(a,b){return b-a;});console.log(arr);</script>
9.选择排序
原理:就是从第一个数开始,与后面所有的数组比较,找出最小(最大)的数,放在第一个位置。依次类推,每一个确定一个相对于这一轮最小(最大)的数。
核心:利用循环嵌套比较,根据索引号来进行交换变量
①:外层循环是一共进行几轮比较,一共进行数组长度-1次进行比较
for(let i=0;i<arr.length-1;i++)
把i作为最小值起始索引minIndex
②:里层循环是每一轮的比较来查找最小值
里层循环起始值是i+1个元素开始查找
for(let j=1;j<arr.length;j++)
进行比较的时候 ,发现最小的数组元素,把当前元素索引号给minIndex
③:如果minIndex和i位置不一致,则交换变量。
<script>let arr=[11,8,22,15,3,31,20];//1.循环嵌套的方式 外层循环 控制比较次数for(let i =0;i<arr.length;i++){//2.定义一个变量,这个变量保存假定的最小数组元素的indexlet MinIndex = i;//外层循环 拿着第一个数,和每一个数做比较for(let j=i+1;j<arr.length;j++){if(arr[j]<arr[MinIndex]) {//如果假定的最小值,比当前这一项还大,那么就保存索引MinIndex = j;}}//4.交换位置if(MinIndex !== i){//如果最小值的索引不等于原来的索引,那么就证明拿到新的最小值let temp =arr[MinIndex];arr[MinIndex] = arr[i];arr[i]=temp;}}console.log(arr);</script>
10.总结
以上文章是笔者的学习笔记,如果您在浏览或者运行代码的时候发现了错误,还请您在第一时间在评论区留言,笔者会在第一时间解决,谢谢。