一、数组
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));