JavaScript 函数 数组
算法(冒泡、选择排序,二分查找法)
函数
又叫方法
作用:封装一段代码,使其
JS函数通过function来定义
语法1: function name(参数一,参数二,参数三){ 要执行的代码; } 语法2(了解): var 方法名 = function(形参列表){ 方法体 } 注意: name就是函数名(命名规则和变量名相同) ()中写的是形参列表,可写可不写 方法中使用return关键字,表示结束当前方法 如果return后有值或变量,表示结束当前方法,并返回该值
为什么使用函数
能够对代码进行复用:只要定义一次,就可以多次使用(调用)
能多次向函数传递不同的参数,以产生不同的结果
<body> <h2>JavaScript 函数</h2> <p>本例调用函数把华氏度转换为摄氏度:</p> <p id="demo"></p> <script> //函数名toCelsius 参数f //返回值(5/9) * (f-32) function toCelsius(f) { return (5/9) * (f-32); } //调用函数toCelsius 参数给的86 document.getElementById("demo").innerHTML = toCelsius(86); </script> </body>
结果如下:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ztnBZk8v-1679401049806)(C:\Users\MOON\AppData\Roaming\Typora\typora-user-images\image-20230321103642595.png)]
使用上面的例子,toCelsius引用的是函数对象,而toCelsius()引用的是函数结果
document.getElementById("demo").innerHTML = toCelsius(86); //返回的是参数为86时,toCelsius的结果 document.getElementById("demo").innerHTML = toCelsius; //返回的是toCelsius函数声明,为function toCelsius(f) { return (5/9) * (f-32); }
函数调用
函数中的代码将在其他代码调用该函数时执行
(也就是你写的这个函数会在以下情况被调用)
1.当事件发生时(点击按钮,点击事件)
2.当JS代码调用时
3.自动的(自调用)
函数返回
当JS到达return语句,函数将停止执行
如果函数被某条语句调用,JS将在调用语句之后“返回”执行代码。
函数通常会计算处返回值。这个值会返回给调用者
//调用函数myFunction,返回值赋值给x var x = myFunction(7,8); //定义函数 函数名叫myFunction function myFunction(a,b){ return a*b; //函数返回a和b的乘积 }
函数用作变量值
函数的使用方法与变量一致,在所有类型的公式、赋值和计算中
例:
//使用变量存储函数值 还是用上面的例子 var x = toCelsius(77); //字符串连接 var text = "摄氏温度是 " + x + " 度";
在JS函数中声明的变量,为局部变量
局部变量只能在函数内访问
局部变量在函数开始时创建,在函数完成时被删除
数组
用于单一变量中存多个值
特点:
JS中的数组长度不限 Java中的数组长度恒定
JS的数组可用放任何类型的数据 Java的只能放放一种类型数据
有下标
例:
var cars =["Saab","volvo","BMW"];
什么是数组
数组是一种特殊的变量,一次能存储一个或多个值
使用步骤
1.声明
2.创建
3.使用
声明
语法:
var 数组名;
创建
语法:
数组名 = [值1,值2,值3,…];
数组名 = new Array();
var name = [date1, date2, ...]; //有字符串就用""括起来 //空格和折行并不重要,声明可横跨多行 var cars = [ "Saab", "Volvo", "BMW" ];
注意:最后一个BMW后不要加 , 涉及兼容问题
使用
1,获取数组中指定位置的数据
数组名[下标]
2,获取数组的长度
数组名.length
3,遍历
将数组中的数据逐个取出
4,修改指定位置的数据
数组名[下标] = 新值;var cars = ["Audi", "BMW", "porsche"]; cars[0] = "Volvo"; //改变了cars数组中的第一个元素的值
5,给数组尾部添加数据
push()方法
数组名.push(添加的数据);
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.push("Lemon"); // 向 fruits 添加一个新元素 (Lemon),默认在尾部
使用length
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits[fruits.length] = "Lemon"; // 向 fruits 添加一个新元素 (Lemon) //length位置就是数组[0,1,2,3]的3后别 //fruits.length代表fruits最后一个元素的下一个位置
6,删除指定位置的数据,保留位置
delete 数组名[下标];var fruits = ["Banana", "Orange", "Apple", "Mango"]; delete fruits[0]; //删除第一个
7,删除指定位置的数据,不保留位置
数组名.splice(开始的位置,删除的数据个数);fruits.splice(2,2); //删除数组fruits的第三个和第四个
注意:
1,下标,又名索引,指的是数据在数组中的位置,从0开始~数组长度-1结束
2,数组长度:数组中容纳的数据个数
var cars = new Array("Saab", "Volvo", "BMW");
和上面例子相同,但不建议使用
访问数组元素
通过如下语句访问:使用数字访问数组
var name = cars[0]; //说白了就是cars的第一个元素,赋值给name
访问完整数组
var cars = ["Saab", "Volvo", "BMW"]; document.getElementById("demo").innerHTML = cars;
使用数字索引,从0开始,[0]代表第一个元素
数组是对象
数组是特殊类型的对象,数组成员可用有对象名
所有,相同数组中可用存放不同类型的变量
可以在数组放对象、函数、数组
var person = {firstName:"Bill", lastName:"Gates", age:19}; document.getElementById("demo").innerHTML =person["firstName"];
数组属性和方法
例:
var x = cars.length; // length 属性返回元素的数量 var y = cars.sort(); // sort() 方法对数组进行排序
length属性返回数组长度(元素数目)
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.length; // fruits 的长度是 4 //length 属性始终大于最高数组索引(下标)。
一些应用
//访问最后一个数组元素 fruits = ["Banana", "Orange", "Apple", "Mango"]; var last = fruits[fruits.length - 1];
遍历
把数组中的值一个一个取出来
document.write(names);
算法
作用:提高代码的执行效率
如何评判算法是否优良:
时间复杂度 代码执行所需的时间,时间越短越好 空间复杂度 代码执行时所需占用的内存,越少越好
常用的算法有哪些?
两数交换位置 var a = 10; var b = 1; var c = a; a = b; b = c; 寻找最大值 寻找最小值 寻找最小值下标 寻找最大值下标 冒泡 核心思想:相邻比较,交换位置 选择 核心思想:目标位置与最值位置,交换 二分查找法 要求:数组必须是有序的
作业(多加练习)
0,整理笔记
1,js数组的创建的语法格式
2,js数组对数据操作的方法
增
删
改
查
3,
1,将5个人的姓名存储到数组中
张三,李四,王五,马六,大宝
2,将大宝修改为候七
3,添加小翠到数组末尾
4,删除王五
5,遍历现在的数组
4,方法的作用是什么?
5,如何定义一个方法
6,如何调用一个方法
7,封装4个方法分别计算两数之和,之差,积,商
8,return,break,continue的作用
9,将题目7中计算结果返回,打印到控制台
10,分别使用冒泡排序与选择排序对以下数组进行排序
数组1:19,2,15,18,91,24,35
数组2:3,15,7,8,1,19,12,32
数组3:67,98,12,3,5,7,9,10
11,使用二分查找法查找10在以下数组中的位置.要求,如果没有返回-1,如果有返回下标,排序后的下标
数组1:19,2,15,18,91,24,35,10
数组2:3,15,7,8,1,19,12,32,11
数组3:67,98,12,3,5,7,9,10,12
附加题
12,使用代码模拟栈
栈:先进后出
13,使用代码模拟队列
对象:先进先出