任务
- 了解数组的概念
- 学会声明数组
- 数组的访问
- 数组的遍历
- 数组的属性:length
- 动态初始化数组
- 排序
- 引用类型传参
- 二维数组
- JSON
数组
- 有序的内存单元集合。
- 作用:可以有序的保存各种类型的数据
数组的声明方式
-
方括号
-
构造函数初始化数组长度
-
构造函数:构造对象用的,通常由new关键字调用
var _arr01=[];//声明数组的第一种方式,用一对中括号表示数组 var _arr02=new Array();//声明数组的第二种方式:构造函数声明数组 //构造函数只能由new关键字调用 //构造函数的作用:用来构造对象用。_ var _arr03=new Array(8);//给构造函数传递一个参数时表示的时设定数组长度 var _arr04=new Array(8,5,0,3,1);//给构造函数传递多个参数时表示初始化数组 console.log(_arr04);
数组的访问方式
- 下标索引
- 索引值从0开始
数组的遍历
- length:用数组名点length就可以获取到数组的长度
数组的初始化
- 手动初始化
- 动态初始化
引用类型传参和基础数据类型传参的区别
- 基础数据类型传参传递是值
- 引用类型传参,传递的是:内存地址
- 注意点:重新赋值和修改
数组排序
- 冒泡排序
- 选择排序
二维数组
-
语法:
var _arr=[[8,5,0,3,1],[9,5,7,3,1],[7,8,6,4,5]];//声明: _arr[0][3]===3;//二维数组的访问 var _first=_arr[0];//_first=[8,5,0,3,1]; _first[3]===3;
JSON
- JSON是一种数据格式:字面量对象
- 语法
var _obj={//声明并初始化
k01:10,
k02:11,
k03:12
};
_obj.k01===10;//如何访问字面量对象
_obj["k01"]===10;//访问字面量对象的第二种方式
- 遍历:for - in
数组的常见方法
-
concat()
连接两个或更多的数组,并返回一个合并后的新数组,不改变原数组。
function fn(){ var _arr1=[8,5]; var _arr2=[0,3,1]; console.log(_arr1.concat(_arr2)); } fn();
-
join()
将数组的每个元素用指定的分隔符分隔拼接成字符串并返回。
function fn(){ var _arr1=[8,5,0,3,1]; console.log(_arr1.join("#")); } fn();
-
pop()
删除并返回数组的最后一个元素
function fn(){ var _arr1=[8,5,0,3,1]; console.log(_arr1.pop());//1 console.log(_arr1.pop());//3 } fn();
-
push()
向数组的末尾添加一个或更多元素,并返回新数组的长度。
function fn(){ var _arr1=[8,5,0,3,1]; console.log(_arr1.push(10));//6 console.log(_arr1.push(10,11,12));//9 //总结:push方法可以添加一个参数也可以添加多个参数 } fn();
-
reverse()
颠倒数组中元素的顺序。
function fn(){ var _arr1=[8,5,0,3,1]; console.log(_arr1.reverse()); } fn();
-
shift()
删除并返回数组的第一个元素
function fn(){ var _arr1=[8,5,0,3,1]; console.log(_arr1.shift()); } fn();
-
slice()
从某个已有的数组返回选定的元素。至少需要一个参数start,start是一个数字,规定从何处开始选取。
如果start是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。第二个参数over规定从何处结束选取。over是数组片断结束处的数组下标。
如果没有指定over,那么切分的数组包含从 start 到数组结束的所有元素。
如果这个over是负数,那么它规定的是从数组尾部开始算起的元素。function fn(){ var _arr1=[8,5,0,3,1]; console.log(_arr1.slice(1));//[5,0,3,1] } function fn(){ var _arr1=[8,5,0,3,1]; console.log(_arr1.slice(-2));//[3,1] } function fn(){ var _arr1=[8,5,0,3,1]; console.log(_arr1.slice(-2,-1));//[3]//不包含结束位置,包含开始位置 } function fn(){ var _arr1=[8,5,0,3,1]; console.log(_arr1.slice(2,-1));//[0,3] } function fn(){ var _arr1=[8,5,0,3,1]; console.log(_arr1.slice(2,5));//[0,3,1] } fn();
-
sort()
对数组的元素进行排序
function fn(){ var _arr1=[8,5,0,3,1]; console.log(_arr1.sort());//[0,1,3,5,8] } function fn(){ var _arr1=[8,95,0,31,1]; console.log(_arr1.sort());//[0,1,31,8,95] //将元素转换成字符串,用字符串的首字符进行比较,如果相等继续比较第二个字符 } function fn(){ var _arr1=[8,95,0,31,1]; console.log(_arr1.sort(function(a,b){ return a-b; }));//[0,1,8,31,95] } fn();
-
splice()
删除元素,并向数组添加新元素,并返回被删除的元素。第一个参数表示要删除的开始位置(索引),第二个参数表示要删除的数量,第二个以后的参数表示新增的元素
function fn(){ var _arr1=[8,95,0,31,1]; console.log(_arr1.splice(1,1));//删除下标索引从1开始的一个元素 } function fn(){ var _arr1=[8,95,0,31,1]; console.log(_arr1.splice(1,1,100));//删除下标索引从1开始的一个元素,并添加一个100到下标索引值为1的地方 console.log(_arr1); } function fn(){ var _arr1=[8,95,0,31,1]; console.log(_arr1.splice(1,1,100,101));//删除下标索引从1开始的一个元素,并添加一个100到下标索引值为1的地方 console.log(_arr1); } fn();
-
toString()
把数组转换为字符串,并返回结果。
-
unshift()
向数组的开头添加一个或更多元素,并返回新的长度。
function fn(){ var _arr1=[8,95,0,31,1]; console.log(_arr1.unshift(10)); } fn();
-
1.编写一个函数,计算两个数字的和、差、积、商。要求:使用传参的形式
-
2.编写一个函数,计算三个数字的大小,按从小到大顺序输出
-
3.编写任意个数字的求和、差、积、商的函数
-
4.编写生成4位数字验证码的函数,并生成10次,同时将结果存入数组
-
5.编写一个函数,计算任意两个数字之间所能组成的奇数个数,数字必须是个位数。比如: 计算0-3之间能组成的奇数个是01、21、03、13、23、31
-
6.某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换,请编写一个函数,传入原文,输出密文
-
7.利用递归求两个数字的最大公约数
-
8.编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调用函数求/1+1/3+…+1/n
-
9.使用函数完成任意数字阶乘的计算。要求:页面输入任意数字,点击按钮后计算阶乘
-
10.山上有一口缸可以装50升水,现在有15升水。老和尚叫小和尚下山挑水,每次可以挑5升。问:小和尚要挑几次水才可以把水缸挑满?通过编程解决这个问题。
-
11.定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;然后按顺序每五个数求出一个平均值,放在另一个数组中并输出。试编程。
-
12.通过循环按行顺序为一个5×5的二维数组a赋1到25的自然数,然后输出该数组的左下半三角。试编程。
-
13.随机生成一个五位以内的数,然后输出该数共有多少位,每位分别是什么
-
14.数组的冒泡排序
-
15.数组的选择排序
-
16.编写函数map(arr) 把数组中的每一位数字都增加30%
-
17.编写函数has(arr , 60) 判断数组中是否存在60这个元素,返回布尔类型
-
18.编写函数norepeat(arr) 将数组的重复元素去掉,并返回新的数组
-
19.有一个从小到大排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。
-
20.使用JSON形式创建一个对象,该对象存储一个学生的信息,该对象包含学号、身份证、年龄、性别、所学专业等属性信息,同时该对象包含一个自我介绍的方法,用来输出该对象的所有信息
-
21.扩展案例:以下是某班级一次考试的成绩表。请计算每个学生总成绩,并按总成绩排名。统计各单科成绩第一名,输出其成绩与学号。
-
学号 语文 数学 英语 总成绩 备注 1 105 62 118 2 89 78 120 3 86 64 80 4 78 99 91 5 107.5 97 70 6 112 61 92 7 101 79 104 8 71 72 105 9 56 68 61 10 98 83 77 -
二维数组求和
var _dimensional=[
[63,14,68,29,74,96],
[2,40,12,37,37,87],
[43,18,33,54,34,56],
[26,35,66,38,31,62],
[9,66,95,74,42,93],
[38,37,46,10,42,22]
];
- 二维数组排序
var _arr=[[8,5,0,3,1],[9,5,7,3,1],[7,8,6,4,5]];
- JSON格式数据排序
var _data={
title:["ID","name","price","sold","praise"],
list:[{
ID:20,name:"小米",price:"1000",sold:8000,praise:899
},{
ID:18,name:"华为",price:"2000",sold:8999,praise:5000
},{
ID:30,name:"苹果",price:"5000",sold:5000,praise:5000
},{
ID:31,name:"vivo",price:"1500",sold:2000,praise:1500
},{
ID:28,name:"oppo",price:"1300",sold:1000,praise:1000
}]
};