数组导读:
-
能够知道为什么要有数组
- 能够创建数组
- 能够获取数组中的元素
- 能够对数组进行遍历
- 能够给数组新增一个元素
- 能够独立完成冒泡排序案例
p97:
数组的概念:可以使用(Array),可以把一组相关的数据一起存放,并提供方便的获取方式
数组是一组数据的集合。
如何创建数组:
- 利用new创建数组
- 利用数组字面量创建数组
var arr = new Array(); //利用new创建了一个空的数组
var arr = [] ;//创建了一个空的数组
var arr = [1,'str','i',9]; //数组内的元素用逗号相隔 数组内可以存放任意数据类型的数据
如何获取数组元素:
var arr = [1,'xiaohong',9,true]; //可以利用索引号来获取数组中的元素,索引号是从0开始第
console.log(arr[1]); //获取数组的方式就是数组名[索引号]
如何遍历数组:
遍历:
var arr = ['monday', 'tuesday', 'wedesday', 'thursday'];
for (var i = 0; i < 4; i++) {
console.log(arr[i]);
}
//把数组中的元素从头到尾访问一次
注意:索引号从0开始,所以i必须从0开始。、
数组的长度:
使用数组名.length,数组的长度就是元素的个数,不要和索引号混淆。
例子:输出数组的 最大值
var arr = [2, 6, 1, 77, 52, 25, 7];
var max = arr[0];
for (var i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
console.log(max);
/*声明一个保存最大元素的变量max;默认最大值为第一个元素;遍历这个数组,把里面每个元素与max比较;如果数组元素大于max,就把这个数组元素存到max里面,否则继续下一轮比较;最后是输出max*/
//利用中间变量
例子:将数组'red', 'green', 'blue', 'pink'转换为字符串,并且输出red|green|blue|pink|;
var arr = ['red', 'green', 'blue', 'pink'];
var str = "";
for (var i = 0; i < arr.length; i++) {
str += arr[i];
str += '|';
}
console.log(str);
数组中新增元素:
1.可以通过length长度来新增数组元素:(实现数组扩容的目的)(length属性是可以读写的),默认值就是未定义的
2. 可以通过修改数组索引新增数组元素
var arr = ['red', 'green', 'blue', 'pink'];
arr[4] = 'pink';
console.log(arr);
没有的 时候就添加,有的就是替换。
例子:筛选元素
var arr1 = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
var arr2 = [];
var j = 0;
for (var i = 0; i < arr1.length; i++) {
if (arr1[i] > 10) {
arr2[j] = arr1[i];
j++; /*每次新数组中的 元素加1,新数组中的j就要增加一次,这是刚开始自己做的时候没想到的*/
}
}
console.log(arr2); //将数组中大于10的数字筛选出来并赋给新数组。
注意新数组的索引号。
var arr1 = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
var arr2 = [];
for (var i = 0; i < arr1.length; i++) {
if (arr1[i] > 10) {
arr2[arr2.length] = arr1[i];
}
}
console.log(arr2);//方法2:直接用new.length作为arrr2的索引
例子:var arr1 = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7]把该数组变成不含0的数组
var arr1 = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
var arr2 = [];
var j = 0;
for (var i = 0; i < arr1.length; i++) {
if (arr1[i] != 0) {
arr2[j] = arr1[i];
j++;
}
}
console.log(arr2);
例子:数组翻转
var arr = ['red', 'blue', 'green', 'black', 'pink'];
var arr2 = [];
var j = 0;
for (var i = 4; i >= 0; i--) {
arr2[j] = arr[i];
j++;
}
console.log(arr2);
案例三:数组排序 重点理解!
var arr = [2, 6, 0, 33, 67, 54, 32, 1];
var num;
//冒泡排序,依次比较两个元素,然后调换顺序
for (var i = 0; i < arr.length; i++) { //外层循环管趟数
for (var j = 0; j < arr.length - i - 1; j++) { //里层循环管每一趟的交换次数
//内部交换变量的值,前一个和后一个比较
if (arr[j] > arr[j + 1]) {
num = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = num;
}
}
}
console.log(arr);
//i和J必须都从零开始
函数导读:
目标:
- 能够说出来为什么需要函数
- 能够根据语法书写函数
- 能够根据需求封装函数
- 能够说出形参和实参的传递过程
- 能够使用函数的返回值
- 能够使用argurments获取函数的参数
函数的概念:
在js里面会使用很多相同结构的代码或者功能相似的代码,这些代码可能就需要大量重复使用
这时候就可以 利用函数。
函数:就是封装了一段可被重复调用执行的代码块,通过此代码可以实现大量代码的重复使用。
函数的使用:
函数在使用时分为声明函数和调用函数。
function 函数名{
函数体;
}
//函数名一般是东西 function时声明函数的变量,全部小写
//调用函数
function();//函数名后面必须加上小括号
函数的封装:把一个或者多个功能通过函数的方式进行封装,对外只提供一个简单的函数接口。
例子:利用函数实现 从1 到100的加法
function getSum() {
var sum = 0;
for (var i = 1; i <= 100; i++) {
sum += i;
}
console.log(sum);
}
getSum(); //不调用函数 函数不起作用。
函数的参数:
函数的参数分为形参和实参。
function 函数名(形参1,形参2...){
}//在声明函数小括号里面是形参
函数名(实参1,实参2);//在调用函数的括号里面的实参
形参是用来接受实参的,形参类似于一个变量。
函数的参数可以有也可以没有,个数不限。
例子:利用函数求任意两个数的和
function getSumup(num1, num2) {
var sum = num1 + num2;
console.log(sum);
}
getSumup(2, 4);
函数形参和实参个数不匹配的问题:
function getSumup(num1, num2) {
var sum = num1 + num2;
console.log(sum);
}
getSumup(2, 4); //1.如果形参的个数和实参的个数一致,则正常输出结果
getSumup(2, 4, 6) //如果形参的个数多于实参的个数,则最后一个舍去
getSumup(2) //如果形参的个数少于实参的 个数, num2没有值,则没有被定义,输出结果NAN
函数的返回值 return:把函数的结果返回给调用者return语句
function cook(aru) {
return aru;
}
console.log(cook('大肘子'));
function getSum(num1, num2) {
return num1 + num2;//注意返回值 要返回给函数调用者 而不是直接输出
}
console.log(getSum(1, 2));
例子:利用函数求两个数中的最大值
function getMax(num1, num2) {
if (num1 > num2) {
return num1;
} else {
return num2;
}
}
console.log(getMax(2, 4));
例子:利用函数求数组中的最大值,可以求任意一个数组
//利用函数求任意一个数组中的最大值
function getMax(arr) {
var max = arr[0];
for (var i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
console.log(getMax([5, 2, 99, 101, 7, 77]));//在我们的实际开发中经常用一个变量来接受函数的返回结果。
return终止函数:
return语句之后的代码不被执行
return终止函数
例子:
function getSum(num1, num2) {
return num1 + num2; //注意返回值 要返回给函数调用者 而不是直接输出
alert('我是不会被执行的');
}
console.log(getSum(1, 2));
//输出结果还是3
return只能返回一个值。
我们求任意两个数的加减乘除结果:
function getSum(num1, num2) {
return [num1 + num2, num1 - num2, num1 / num2];
}
console.log(getSum(1, 2));
函数返回值的注意事项:
如果有return则返回的是return后面的值,如果没有return,则返回的是未定义。
break,continue,return的区别:
break:结束当前的循环体
continue:跳出本次循环
return:不仅可以推出循环,还能够返回return的值,还可以用来结束当前函数体内的代码。
下一节p126.