JavaScript基础(四)笔记

数组

数组(Array)是指一组数据的集合,其中的每个数据被称作元素,在数组中可以存放任意类型的元素。数组是一种将一组数据存储在单个变量名下的优雅方式。

//普通变量一次只能存储一个值
var num = 10;
//数组一次可以存储多个值
var arr =[1,2,3,4,5];

数组的创建方式

  • 利用 new 创建数组
  • 利用数组字面量创建数组

利用 new 创建数组

//var 数组名 = new Array();
var arr = new Array(); // 创建一个新的空数组

注意:Array首字母要大写

利用数组字面量创建数组

//var 数组名 = [];
var arr = ['小白','小黑'1true]
//索引号       0     1    2   3
//arr[1]='小黑'

注意:

  • 数组的字面量是方括号 []
  • 索引号从0开始

遍历数组

我们可以通过 for 循环索引遍历数组中的每一项

var arr = ['red','green','blue'];
for (var i = 0;i < arr.length;i++) {
    console.log(arr[i]);
}
  • 数组长度 数组名.length

案例

求数组的和以及平均值
var arr = [2,6,1,7,4];
var sum = 0;
var average = 0;
for(var i = 0;i < arr.length;i++) {
   sum += arr[i];
}
average = sum / arr.length;
console.log(sum,average);
求数组最大值

求数组[2,6,1,77,52,5,7]中的最大值

var arr = [2, 6, 1, 77, 52, 5, 7];
var max = arr[0];
for (var i = 1; i < arr.length; i++) {
    if (arr[i] > max) {
        max = arr[i];
     }
}
console.log(max);
数组转换为分割字符串

要求:将数组[‘red’,‘green’,‘blue’,‘pink’]转换为字符串,并且用|或其他符号分割

输出:‘red|green|blue|pink|’

思路:就是把里面的元素相加就好了,但是注意保证是字符相加

  • 需要一个新变量 str 用于存放转换完的字符串。
  • 遍历原来的数组,分别把里面数据取出来,加到字符串变量 str 里面。
var arr = ['red', 'green', 'blue', 'pink'];
var str = '';
for (var i = 0; i < arr.length; i++) {
    str += arr[i] + '|';
}
console.log(str);

数组新增元素

通过修改length长度新增数组元素

  • 可以通过修改 length 长度来实现数组扩容的目的
  • length 属性是可读写的
var arr = ['red','green'];
console.log(arr.length);
arr.length = 4;
console.log(arr.length);
console.log(arr[2]);
console.log(arr[3]);

其中索引号是2,3的空间没有赋值,就是声明变量未给值,默认值就是 undefined

通过修改数组索引号新增数组元素 (常用)

  • 可以通过修改数组索引的方式追加数组元素
  • 不能直接给数组名赋值,否则会覆盖掉以前的数据
  • 这种方式也是我们最常用的一种方式
var arr = ['red','green'];
arr[2] = 'blue';
console.log(arr);

案例

新建一个数组,里面存放1~10
var arr = [];
for(var i = 1; i <= 10;i++){
    arr[i-1] = i;
}
console.log(arr);
将数组 [2, 0, 6, 1, 77, 0, 52, 0, 25, 7] 中大于等于 10 的元素选出来,放入新数组
var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
var newArr = [];
for (var i = 0; i < arr.length; i++) {
    if (arr[i] >= 10) {
        // 给新数组
        newArr[newArr.length] = arr[i];
    }
}
console.log(newArr);

筛选数组

要求:将数组[2,0,6,1,77,0,52,0,25,7]中大于等于10的元素选出来放入新数组

方法一

var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
var newArr = [];
var j = 0;
for (var i = 0; i < arr.length; i++) {
    if (arr[i] >= 10) {
         newArr[j] = arr[i];
         j++;
	}
}
console.log(newArr);

方法二

var arr = [2, 0, 6, 1, 77, 0, 52, 0, 25, 7];
var newArr = [];
//var j = 0;使用newArr.length,初始为0,每次加个数就加一,和j的功能一样
for (var i = 0; i < arr.length; i++) {
    if (arr[i] >= 10) {
         newArr[newArr.length] = arr[i];
	}
}
console.log(newArr);

翻转数组

要求:将数组[1,2,3]反转

输出:[3,2,1]

var arr = [1,2,3,'red'];
var newArr = [];
for(var i = arr.length - 1;i >= 0;i--){
   newArr[newArr.length] = arr[i];
}
console.log(newArr);

冒泡排序

image-20220111141928183

外层循环为趟数,内层循环为交换次数,i,j从0开始因为数组下标从0开始

image-20220111142509811

找规律,i + 交换次数 = arr.length - 1

//从小到大
var arr = [6,2, 7,4, 1, 5, 3];
for (var i = 0; i < arr.length - 1; i++) {//外层循环趟数
    for (var j = 0; j < arr.length - 1 - i; j++) {//内层循环交换次数
        if (arr[j] > arr[j + 1]) {
            //交换数组元素
           var temp = arr[j];
           arr[j] = arr[j + 1];
           arr[j + 1] = temp;
        }
     }
}
console.log(arr);

//从大到小(arr[j] < arr[j+1])
var arr = [6,2, 7,4, 1, 5, 3];
for (var i = 0; i < arr.length - 1; i++) {//外层循环趟数
    for (var j = 0; j < arr.length - 1 - i; j++) {//内层循环交换次数
        if (arr[j] < arr[j + 1]) {
            //交换数组元素
           var temp = arr[j];
           arr[j] = arr[j + 1];
           arr[j + 1] = temp;
        }
     }
}
console.log(arr);

函数

函数:就是封装了一段可被重复调用执行的代码块。通过此代码块可以实现大量代码的重复使用。

函数在使用时分为两步:1.声明变量 2.调用函数

  1. 声明变量
function 函数名() {
    //函数体
}
  • function 是声明函数的关键字,必须小写
  • 由于函数一般是为了实现某个功能才定义的, 所以通常我们将函数名命名为动词,比如 getSum
  1. 调用函数
函数名()
  • 调用的时候千万不要忘记加小括号
  • 函数不调用,自己不执行

案例

利用函数求累加和

function getSums(num1, num2) {
	var sum = 0;
	for (var i = num1; i <= num2; i++) {
		sum += i;
	}
	console.log(sum);
}
getSums(1, 100);
getSums(1, 1000);

求两个数的和

function getSum(num1,num2){
    console.log(num1 + num2);
}
getSum(1,2);

函数的参数

声明函数时,可以在函数名称后面的小括号中添加一些参数,这些参数被称为形参,而在调用该函数时,同样也需要传递相应的参数,这些参数被称为实参

参数说明
形参式上的函数定义的时候传递的参数 当前并不知道是什么
实参际上的函数调用的时候传递的参数 实参是传递给形参的

参数的作用:在函数内部某些值不能固定,我们可以通过参数在调用函数时传递不同的值进去

形参和实参

function(形参1,形参2...){//声明函数的小括号里为形参   
}

函数名(实参1,实参2...);//函数调用的小括号里为实参

形参和实参匹配问题

function getSum(num1,num2){
    console.log(num1 + num2);
}
//1.个数一致,正常输出结果
getSum(1,2);
//2.实参个数多余形参个数,会取到形参的个数,1给num1,2给num2,3就不取了
getSum(1,2,3);//结果为3
//3.实参个数小于形参个数
//形参可以看作是不用声明的变量,num1为1,num2是一个变量但没有接收值,所以是undefined, 数字+undefined=NaN
getSum(1);//结果为NaN
参数个数说明
实参个数等于形参个数输出正确结果
实参个数多于形参个数只取到形参个数
实参个数小于形参个数多的形参定义为undefined,结果为NaN

JavaScript中形参默认为undefined

函数的返回值return

return 返回结果

有时候,我们会希望函数将值返回给调用者,此时通过使用 return 语句就可以实现。

// 声明函数
function 函数名(){
    ...
    return  需要返回的值;
}
// 调用函数
函数名();    // 此时调用函数就可以得到函数体内return 后面的值
  • 在使用 return 语句时,函数会停止执行,并返回指定的值
  • 如果函数没有 return ,返回的值是 undefined

示例:

function getSum(num1,num2){
    return num1 + num2;
}
console.log(getSum(1,2));

function getMax(num1, num2) {
 //     if (num1 > num2) {
 //         return num1;
//     } else {
//         return num2;
 //     }
          return num1 > num2 ? num1 : num2;
}
console.log(getMax(2, 4));

function getArrMax(arr){
    var max = arr[0];
    for (var i = 1; i < arr.length; i++) {
    	if (arr[i] > max) {
        max = arr[i];
     	}
	} 
    return max;
}
var re = getArrMax([1,2,3]);
console.log(re);

return 终止函数

  • return 之后的语句不会被执行
  • return只能返回一个值,如果用逗号隔开多个值,以最后一个为准
  • 要想返回多个值,可用数组
//返回加减乘除
function getResult(num1,num2){
    return [num1 + num2,num1 - num2,num1 * num2,num1 / num2]
}

返回值两个注意事项

  1. 如果有 return ,则返回 return 后面的值
  2. 如果没有 return,则返回 undefined

break continue return 区别

  • break : 结束当前循环体(如 for、while)
  • continue :跳出本次循环,继续执行下次循环(如for、while)
  • return :不仅可以退出循环,还能够返回 return 语句中的值,同时还可以结束当前的函数体内的代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值