1.数组
1.1数组的意义及创建
- 数组:一组数据的集合,将一组数据存储在单个变量
- 创建方式
//1、利用new创建数组
var arr = new Array();
//2、利用数组字面量创建数组
var arr = [];//常见用法
var arr1 = [1,2,'啦啦啦',true];//数组中的数据一定要用逗号分隔开
//3、数组里面的数据,我们称为元素,数组里的元素可以是任意类型
1.2访问数组元素
- 数组的索引(下标),用来访问数组元素的序号(从0开始)
var week = ['周一','周二','周三','周四','周五','周六','周日']
console.log(week[6]);//周日
- 扩展
week.forEach(function(item,index){
console.log(item);
});
1.3遍历数组
- 把数组中的元素从头到尾都访问一遍
- 数组名[索引号]
var color = ['red', 'pink', 'blue', 'green','aqua'];
console.log(color[0]);//输出red
console.log(color[3]);//输出green
- 通过for循环索引遍历数组
for (var i = 0; i < color.length; i++) { //使用“数组名.length”可以访问数组元素的数量(数组长度)
console.log(color[i]);
}
- 注意
- 因为数组索引号从0开始,所以 i 必须从0开始
- 输出的时候 i 计数器当索引号来用
- 此处数组的长度是数组元素的个数 ,不要和数组的索引号混淆
- 当我们数组里面的元素个数发生了变化,这个** length 属性跟着一起变化**
- 案例
//求数组的和及平均值
var sum = 0;
var num = [2, 6, 1, 7, 4];
for (var i = 0; i < num.length; i++) {
sum = sum + num[i];//我们加的是数组元素 num[i],不是计数器
}
var average = sum / num.length;
console.log(`这个数组的和是${sum}`);//输出20
console.log(`这个数组的平均值是${average}`);//输出4
//求数组的最大值
var num1 = [2, 6, 1, 77, 52, 25, 7,87,5,95];
var max = num1[0];
for(var i = 1; i < num1.length; i++){
if(num1[i] > max){
max = num1[i];
}
}
console.log(`这个数组的最大值是${max}`);//输出95
1.4数组中新增元素
- 数组中新增元素 修改length长度
var arr = ['red', 'green', 'blue', 'pink'];
console.log(arr.length);
arr.length = 7;//把我们数组的长度修改为了7,里面应该有7个元素
console.log(arr);
console.log(arr[4]);//没有赋值,默认是undefined
- 数组中新增元素 修改索引号
arr[4] = 'hotpink';
arr[5] = 'lightgreen';
arr[6] = 'aqua';
console.log(arr[4]);
console.log(arr[5]);
console.log(arr[6]);
- 注意:如果索引号被占用,原有元素会被替换;不要直接给数组名赋值,否则里面的数组元素都没有了
- 案例
//将数组中大于等于10的数字筛选出来组成新的数组
//方法一
var str1 = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
var str2 = [];
var j = 0
for(var i = 0; i < str1.length; i++){
if(str1[i] >= 10){
//新数组从0开始,依次递增
str2[j] = str1[i];
j++;
}
}
console.log(str2);//输出数组[77,52,25]
//方法二
var str1 = [2,6, 1, 77, 52, 0, 25, 7,34,6];
var str2 = [];
for(var i = 0; i < str1.length; i++){
if(str1[i] >= 10){
str2[str2.length] = str1[i];//刚开始str2.length就是0,存了一个值之后,length自动变化
}
}
console.log(str2);//输出数组[77,52,25]
1.5数组案例
- 将数组[2, 0, 6, 1, 77, 0, 52, 0, 25, 7]中的0去掉,形成一个不包含0的新数组
var str = [2,0,6,1,77,0,52,0,25,7];
var newstr = [];
for(var i = 0; i < str.length; i++){
if(str[i] != 0){
newstr[newstr.length] = str[i];
}
}
console.log(newstr);//输出数组[2,6,1,77,52,25,7]
- 要求: 将数组 [‘red’, ‘green’, ‘blue’, ‘pink’, ‘purple’] 的内容反过来存放
var color = ['red', 'green', 'blue', 'pink', 'purple'];
var newcolor = [];
for(var i = color.length - 1; i >= 0; i--){//for(var i = 0; i < color.length; i++){
newcolor[newcolor.length] = color[i]//newcolor[i] = color[color.length - i - 1];
}//}
console.log(newcolor);
1.6冒泡排序
- 冒泡排序 ,是一种算法,把一系列的数据按照一定的顺序进行排列显示(从小到大或者从大到小)
var str = [5, 4, 3, 2, 1];
for (var i = 0; i < str.length - 1; i++) { //外层循环管趟数
for (var j = 0; j < str.length - i - 1; j++) { //里层循环管次数
if (str[j] > str[j + 1]) { //内部交换两个变量的值,前一个和后一个相比较
var temp = str[j];
str[j] = str[j + 1];
str[j + 1] = temp;
}
}
}
console.log(str);//输出数组[1,2,3,4,5]
2.函数
2.1函数的意义及使用
- 函数,就是封装了一段可被重复调用执行的代码块。通过此代码块可以实现大量代码的重复使用
- 声明函数
function 函数名() {
函数体代码
}
- 注意:
- function 是声明函数的关键字,必须小写
- 由于函数一般是为了实现某个功能才定义的,所以通常我们将函数名命名为动词,比如 getSum
- 调用函数 函数名()
function sayHi(){
console.log('hi~');
}
sayHi();
- 注意:
- 调用的时候千万不要忘记添加小括号
- 口诀:函数不调用,自己不执行
- 声明函数本身并不会执行代码,只有调用函数时才会执行函数体代码
- 函数案例
//计算1-100的和的值的函数
function getsum(){//声明一个函数
var sum = 0;
for(var i = 1; i <= 100; i++){
sum += i;
}
console.log(sum);
}
getsum();//调用函数
2.2函数中的实参与形参
- 定义:在声明函数时,可以在函数名称后面的小括号中添加一些参数,这些参数被称为形参;在调用该函数时,同样也需要传递相应的参数,这些参数被称为实参
- 作用,在函数内部某些值不能固定,我们可以通过参数在调用函数时传递不同的值进去
// 带参数的函数声明
/* function 函数名(形参1, 形参2, 形参3等) { 形参是接受实参的,类似于一个变量
函数体
}
函数名(实参1, 实参2, 实参3等); 参数可以有也可以没有,个数不限,用逗号分开*/
- 案例
//利用函数求两个数的和
function getsum(num1, num2, num3) {
console.log(num1 + num2 + num3);
}
getsum(4, 8,8);//12
getsum(5,23);//28
2.3补充函数相关
-
函数参数的传递过程
- 调用的时候实参值是传递给形参的
- 形参简单理解为:不用声明的变量
- 实参和形参的多个参数之间用逗号(,)分隔
-
函数形参和实参个数不匹配问题
- 实参个数与形参个数相同时,输出正确结果
- 实参个数大于形参个数时,只取到形参的个数
- 实参个数小于形参个数时,多的形参定义为undefined,结果为NaN
-
注意,在JavaScript中,形参的默认值是undefined
2.4函数的返回值return
- return语句,将函数的值返回给调用者
// 声明函数
/* function 函数名(){
return 需要返回的值;
}
函数名(); 此时调用函数就可以得到函数体内return 后面的值*/
- 注意:
- 在使用 return 语句时,函数会停止执行,并返回指定的值
- 如果函数没有 return ,返回的值是 undefined
- 案例
//1、利用函数求任意两个数的最大值
function getmax(num1,num2){
return num1 > num2? num1 : num2;
/* if(num1 > num2){
return num1;
}else{
return num2;
} */
}
console.log(getmax(34,65));
console.log(getmax(76,23));
//2、利用函数求任意一个数组中的最大值
function getMax(arr){
var max = arr[0];
for(var i = 1; i < arr.length; i++){
if(arr[i] > max){
max = arr[i];
}
}
return max;
}
var arr1 = [3,5,8,12,54,32,18];
// var max1 = getMax(arr1);
// console.log(max1);
console.log(getMax(arr1));
- 补充:
- 使用return时,函数会停止执行,之后的语句不再执行
- return只能返回一个值,有多个值时,返回最后一个
3.一些作业中的案例
- 写一个函数,用户输入一个数判断是否是素数,并返弹出回值(又叫质数,只能被1和自身整数的数)
var num = +prompt('请输入一个正整数');
function getprime(num){
for(var i = 2; i < num; i++){
if(num % i == 0){
return '不是';
}
}
return '是';
}
console.log(getprime(num));
- 简易计算器,用户可以选择计算方法及输入数字
var choose = prompt('欢迎使用简易计算器:' + '\n' + '1,加法计算;' + '\n' + '2,减法计算' + '\n' + '3,乘法计算' + '\n' + '4,除法计算' +'\n' + '5,退出' + '\n' + '请输入您的选项');
if (choose == 5) {
alert('退出');
} else {
var num1 = +prompt('请输入第一个数');
var num2 = +prompt('请输入第二个数');
alert(getresult(num1, num2));
}
function getresult(num1, num2) {
if (choose == 1) {
return num1 + num2;
} else if (choose == 2) {
return num1 - num2;
} else if (choose == 3) {
return num1 * num2;
} else if (choose == 4) {
return num1 / num2;
}
}