数组,函数,算法

在这里插入图片描述

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,使用代码模拟队列
	对象:先进先出
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值