数组和函数笔记
一、数组(Array)
数组是指一组数据的集合,其中的每个数据称作元素,在数组中可以存放任意类型元素。数组是一种将一组数据存储在单个变量名下的优雅方式
1.创建数组
1.1利用new创建数组
var arr = new Array();
var arr1 = new Arry(2);//表示数组的长度为2 里面有两个空的数组元素
var arr2 = new Array(1,2,3); //等价于[1,2,3]
A要大写
1.2利用数组字面量创建数组
var arr = [];
var arr1 = [1,2,'pink']
数组里面的数据一定要用逗号隔开
数组里面的元素称为数组元素
2.数组使用 获取(访问)数组元素
2.1数组的索引
索引及下标:用来访问数组元素的序号(数组小标从0开始)
格式:数组名[索引号]
var arr1 = ['小南','杰克','佩奇','小猪'];
console.log(arr1[1]);//得到杰克
arr1[4]没有结果则输出undefined
2.2遍历数组 (把数组中的每个元素从头到尾访问一遍)
var arr = ['杰克','南佩','瓦拉','南希'];
console.log(arr.length);//获取数组长度
for (var i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
2.3数组长度
console.log(arr.length);
2.4计算数组元素的平均值
var arr = [2,4,7,8,3,50];
var sum;
var average;
for (var i = 0; i < arr.length; i++){
sum += arr[i];
}
average = sum / arr.length;
console.log(sum, average);
2.5求数组中最大/小值
var arr = [15, 25, 63, 88, 98, 56, 25];
var max = arr[0];
for (var i = 1; i < arr.length; i++) {
if (max < arr[i]) {
max = arr[i];
}
}
console.log('最大的数是:' + max);
var arr = [15, 25, 63, 88, 98, 56, 25];
var min = arr[0];
for (var i = 1; i < arr.length; i++) {
if (min > arr[i]) {
min = arr[i];
}
}
console.log('最小的数是:' + min);
2.6数组转化为分割字符串
var arr = ['fedff', 'dss', 'sdcaa', 'dcaacw', 'sdcadc'];
var ge = '!';
var str = 0;
for (var i = 0; i < arr.length; i++) {
str += arr[i] + ge;
}
console.log(str);
3.数组中新增元素
3.1通过修改length长度来实现
var arr = [52,56,23,56,52];
console.log(arr.length);//此时长度是5
arr.length = 7;//把长度改为7
3.2通过修改索引号 (追加数组元素)
var arr = [52,56,23,56,52];
arr[5] = 'pink';
console.log(arr);
arr[0] = 'red';//如果原来有则是追加 即更新
arr = '有点意思’不要直接给数组名赋值,否则里面以前的数组元素都没有了
案例1:数组存放1~100个值
var arr = [];
for (var i = 0; i < 100; i++) {
arr[i] = i + 1;
}
console.log(arr);
案例2:筛选数组
方法一:
var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
var arr1 = [];
var j = 0;
for (var i = 0; i < arr.length; i++) {
if (arr[i] > 10) {
arr1[j] = arr[i];
j++;
}
}
console.log(arr1);
方法一:
var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
var arr1 = [];
//一开始arr1.length是0
for (var i = 0; i < arr.length; i++) {
if (arr[i] > 10) {
arr1[arr.length] = arr[i];//第一轮是0,第二轮是1、、、、、、
j++;
}
}
console.log(arr1);
案例3:翻转数组
var arr = ['fedff', 'dss', 'sdcaa', 'dcaacw', 'sdcadc'];
var arr1 = [];
for (var i = arr.length - 1; i >= 0; i--) {
arr1[arr1.length] = arr[i]
}
console.log(arr1);
for (var i = arr.length - 1; i >= 0; i–) 取最后一个 利用数组长度减一
arr1[arr1.length] = arr[i]; 利用新数组长度开始为0,调整索引号
4.冒泡排序
是一种算法,把一系列的数据按照一定的顺序进行排列显示(从小到大或重大到小)
二、函数
就是封装了一段可被重复调用执行的代码块。通过此代码块可以实现大量代码的重复使用。
1.函数使用
1.1声明函数
function 函数名() {
//函数体
}
①function 声明函数的关键字 全部小写
②函数做某件事,函数名一般是动词
③函数不调用自己不执行
1.2调用函数
函数名(); 记得加小括号
function sayHi() {
console.log('Hello')
}
sayHi();//调用
1.3函数的封装
函数的封装是把一个或者多个功能通过函数的方法封装起来。对外只提供一个简单的函数接口。
2.函数的参数
2.1形参和实参
function 函数名(形参1,形参2,形参3…) {
}
函数名(实参1,实参2,实参3…);
①函数的参数可以有,可以没有,可以有无限个。
②在声明函数的小括号里面是形参。在函数调用的小括号里面是实参。
③形参是来接受实参的。类似于一个变量。形参不需要声明。
2.2函数形参和实参个数不匹配
1.实参多于形参 由形参决定
2.实参少于形参 则没有接受值的形参结果是undefined,
3.函数的返回值
3.1函数将值返回给调用者,此时通过使用return语句就可以实现。
// function 函数名() {
// return 需要返回的结果;
// }
// 函数名();
function getSum(num1,num2) {
return num1 + num2;//返回给调用者
}
console.log(getSum(1,2));//外部输出
案例1:求两个数最大值
//法一:
function GetMax(num1,num2) {
if (num1 > num2) {
return num1;
} else {
return num2;
}
}
console.log(GetMax(5,3));
//法二 三元可作简单判断
function GetMax(num1,num2) {
return num1 > num2 ? num1 : num2;
}
console.log(GetMax(14,75));
案例2:求数组最大值
function GetMax(arr) {
var max = arr[0];
for (var i = a[1]; i < arr.length; i++) {
if (max < a[i]) {
max = a[i];
}
}
return max;
}
//console.log(GetMax([12,26,9,65,5]));
//实际开发中,我们通常用一个变量来接收函数的返回值
var re = GetMax([12,26,9,65,5]);
console.log(re);
3.2return注意事项
①return终止函数,return后面的语句不再执行
②return 只能返回一个值 (return num,num2;返回的结果是最后一个值)
返回多个值可以用数组
function GetResult(num1,num2) {
return [num1 + num2, num1 - num2, num1 * num2];
}
console.log(GetResult(12,3));
③函数无return 则返回undefined
④不仅可以退出循环,还能够返回return语句中的值,同时可以结束当前函数体的代码。
4.arguments的使用
不确定有多少个实参传递时可以用arguments来获取。在JavaScript中,Documents实际上,它是当前函数的一个内置对象,arguments对象中存储了传递的所有实参。
function fn() {
//console.log(arguments);
//console.log(arguments[2]);
//可以按照数组的遍历访问值
for (var i = 0; i < arguments.length; i++ ) {
console.log(arguments[i]);
}
}
fn(1,2,3,6,8);
arguments展示形式是一个伪数组:并不是真正的数组,它没有真正数组的一些方法。只有函数才有arguments对象。
案例1:求函数任意个数的最大值
5.函数可以调用函数
6.函数案例
6.1冒泡
6.2判断闰年
function runyear(year) {
var flag = false;
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
flag = ture;
}
return flag;
}
runyear(1999);
7.函数两种声明方式
7.1命名函数
function 函数名(){
}
7.2匿名函数 (变量赋值方式)
var 变量名 = function(){}; 此时调用函数时是:变量名();