JavaScript基础模块(三)

一、数组

1、为什么要使用数组?

如果存储多个数据时,会开辟多个内存,占用内存空间,造成浪费

2、数组的定义

多个元素(通常是同一类型)按一定顺序排列放到一个集合中,那么这个集合我们就称之为数组。
	元素:数组中的单个数据
	顺序:数组是有序的
	集合:把数组看成元素的集合

3、创建数组

字面量创建数组
var arr1 = [];	// 空数组:数组中没有元素
var arr2 = ['小王', '小刚', '小李', '小张'];

// 数组中的元素可以是任意的数据类型
var arr3 = [100, undefined, null, true];	

4、数组的长度:元素的个数 length

	console.log(arr2.length);	//获取数组的长度
	
    arr2.length = 6;	// 数组的长度可以设置,但一般只获取不设置
    console.log(arr2.length);
    console.log(arr2);

5、获取数组中的元素

// 索引值(下标):从0开始,第一个元素的索引就是0 ,依次加1,与元素位置相差1
// 数组名[索引值]
console.log(arr2[0]);	//数组中的第一个元素 //小王
console.log(arr2[3]);	//小张

// 获取数组中的最后一个元素 数组名[数组名.length-1]
console.log(arr2[arr2.length - 1]);	//小张

6、数组的添加元素

(1)通过下标(下标的值是元素数组的长度)
  arr2[4] = '小爱';		// 写已有下标会替换掉原有元素
  console.log(arr2);	//小王、小刚、小李、小张、小爱
(2)栈操作  先进后出 

在这里插入图片描述

  arr2.push('小孙');		// 添加元素 push()  入栈  往栈顶添加元素
  console.log(arr2);
  
  arr2.pop();	// 删除元素 pop()   出栈  从栈顶删除元素
  console.log(arr2);

7、遍历数组 将数组中的元素循环一遍

for (var i = 0; i < arr2.length; i++) {
    console.log(arr2[i]);
  }

二、数组案例

// 1、求一组数中的所有数的和与平均值
  var arrNum = [1, 2, 3, 4, 5, 6, 7, 8, 9];
  var arrSum = 0;
  var avg;
  for (var i = 0; i < arrNum.length; i++) {
    arrSum += arrNum[i];
  }
  avg = arrSum / arrNum.length;
  console.log(arrSum);
  console.log(avg);
// 2、求一组数中的最大值和最小值,以及所在的位置
  var maxNum = arrNum[0];//假设最大值是第一个元素
  var maxIndex = 0;
  var minNum = arrNum[0];//假设最小值是第一个元素
  var minIndex = 0;
  for (var i = 0; i < arrNum.length; i++) {
    if (arrNum[i] >= maxNum) {
      maxNum = arrNum[i];
      maxIndex = i + 1;
    }
    if (arrNum[i] <= minNum) {
      minNum = arrNum[i];
      minIndex = i + 1;
    }
  }
  console.log("最大值:" + maxNum + ',位置' + maxIndex);
  console.log("最小值:" + minNum + ',位置' + minIndex);
// 3、将字符串数组用|或其他符号分割,返回一个字符串
  var str = '';
  for (var i = 0; i < arrNum.length; i++) {
    if (i < arrNum.length - 1) {
      str = str + arrNum[i] + '|';
    } else {
      str = str + arrNum[i];
    }
  }
  console.log(str);
// 4、要求将数组中的第一个元素去掉,将不为第一个元素的值存入一个新的数组,生成新的数组
var arrNew = [];
  for (var i = 0; i < arrNum.length; i++) {
    if(i!=0){
      arrNew.push(arrNum[i]);
    }
  }
  console.log(arrNew);
// 5、翻转数组
  var arrNew1 = [];
  for (var i = arrNum.length-1; i>=0; i--){
    arrNew1.push(arrNum[i]);
  }
  console.log(arrNew1);
6、数组去重,返回一个新数组
function arrNew(arr) {
    for (var i = 0; i < arr.length; i++) {
      for(var j=i+1;j<arr.length;j++){
        if(arr[i]==arr[j]){
          arr.splice(j,1);	//splice方法
          j--;
        }
      }
    }
    return arr;
  }
  var arr1 = [1, 2, 1, 3, 6, 2, 7, 3, 6, 1];
  var arr2 = arrNew(arr1);
  console.log(arr2);

三、函数

函数的概念:把具有特定功能的代码封装在一起,称之为函数。

1、函数的声明

function关键字 函数名(){}
function fn1() {//函数名的命名规范和变量名的命名规范一样
// 函数体
console.log('我是函数声明');
}

2、函数表达式

var 函数名 = funcation(){}
var fn2 = function () {
// 函数体
console.log('我是函数表达式');
 }

3、函数的调用:函数体中的内容默认是不会去执行的,除非进行函数的调用

函数名()
 fn1();
 fn2();

4、函数的参数

 参数的概念:写在函数的()里面,起到链接函数内部与外部的一个桥梁作用
 在函数定义的小括号中的参数称之为形式参数---形参(变量)
 在函数调用的小括号中的参数称之为实际参数---实参(具体的值)

例子:求n-m之间的和

var sum3 = 0;
var getResult1 = function (n, m) {	//n,m是形参,多个形参之间用,分割
    for (var i = n; i <= m; i++) {
      sum3 += i;
    }
    console.log(sum3);
  }
  
  // getResult1(1, 100);
  getResult1(100, 200);		//100,200都是实参

5、函数的返回值:让函数返回一些东西,也就是返回值

// return
function fn1() {
return 1;
}

// 函数的调用就是函数的返回值
 var result = fn1();
 console.log(result);

返回值总结:

1.如果函数没有显示的使用 return语句 ,那么函数有默认的返回值:undefined
2.如果函数使用 return语句,那么跟在return后面的值,就成了函数的返回值
3.如果函数使用 return语句,但是return后面没有任何值,那么函数的返回值也是:undefined
4.函数使用return语句后,这个函数会在执行完 return 语句之后停止并立即退出,也就是说return后面的所有其他代码都不会再执行。

四、函数案例

1、圆的面积
function getArea(r) {
    // 数学对象Math
    // 圆周率属性 Math.PI
    // var area = 3.14 * r * r;
    var area = Math.PI * r * r;
    area = area.toFixed(2);
    console.log(area);
  }
  getArea(10);	//调用函数
2、求阶乘
function getFactorial(n) {
    if (n < 0) {
      return;
    } else if (n == 0) {
      return 1;
    }
    var factorial = 1;
    for (var i = 1; i <= n; i++) {
      factorial *= i;
    }
    return factorial;
  }
  var result1 = getFactorial(3);
  console.log(result1);
3、求1!+2!+3!+....+n!
function factorialSum(n) {
    if (n < 0) {
      return;
    } else if (n == 0) {
      return 1;
    }
    var factorial = 1;
    var sum = 0;
    for (var i = 1; i <= n; i++) {
      factorial *= i;
      sum = sum + factorial;
    }
    return sum;
  }
  var result = factorialSum(5);
  console.log(result);
4、输入一个年份,判断是否是闰年[闰年:能被4整数并且不能被100整数,或者能被400整数]
function getLeap(year) {
    if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
      return year + '年是闰年';
    } else {
      return year + '年不是闰年';
    }
  }
  var year = Number(prompt('请输入一个年份:'));
  console.log(getLeap(year));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值