JS 数组、函数

一、数组

1. 创建数组

利用 Array() 创建数组

1
var arr = new Array();		// 一个名为 arr 的空数组

利用 字面量([]) 创建数组

1
var arr = [];		// 一个名为 arr 的空数组

2. 数组的使用

下标:

数组的 下标 从 0 开始

1
2
var arr = [3.14, 'JS', 'HTML', true];
console.log(arr[1]); // JS

遍历元素

变量名.length : 可以获取 数组元素的 个数.

1
2
3
4
var arr = [3.14, 'JS', 'HTML', true];
for (var i = 0; i < arr.length; i++) {
console.log(arr[i]);
}

获取数组中的最大值:

1
2
3
4
5
6
7
8
var arr = [3.14, 18, -21, 33, 0, 1];
var num = 0;
for (var i = 0; i < arr.length; i++) {
if (num < arr[i]) {
num = arr[i]
}
}
console.log(num); // 33

数组转为字符串:

1
2
3
4
5
6
var arr = [3.14, 'JS', 'HTML', true];
var num = "";
for (var i = 0; i < arr.length; i++) {
num += arr[i]
}
console.log(num);

3. 增加数组元素

修改数组长度

1
2
3
4
5
6
7
8
var arr = [3.14, "JS", "HTML", true];
console.log(arr.length); // 4

// 修改 length 长度,增加元素
arr.length = 6;
console.log(arr.length); // 6
console.log(arr[4]); // undefined
console.log(arr[5]); // undefined

修改索引增加数组长度

1
2
3
4
5
6
7
8
9
var arr = [3.14, "JS", "HTML", true];
console.log(arr.length); // 4

// 修改索引 增加 数组长度
arr[4] = '老王';
arr[5] = '张三';
console.log(arr.length); // 6
console.log(arr[4]); // 老王
console.log(arr[5]); // 张三

冒泡排序

1
2
3
4
5
6
7
8
9
10
11
var arr = [0, 12, 6, 66, -2, -30];
for (var i = 1; i < arr.length; i++) {
for (var j = 0; j < arr.length - i; j++) {
if (arr[j] > arr[j + 1]) {
var num = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = num;
}
}
}
console.log(arr); // [-30, -2, 0, 6, 12, 66]

二、函数 ( function )

1. 函数的基本使用

申明函数:

1
2
3
4
function 函数名(参数1,参数2,...) {
函数体;
return 返回值;
}

调用函数:

1
函数名(参数1,参数2,...);

形参: 形式上的参数,申明函数里的参数都是型参

实参: 实际上的参数,函数实际调用的时,函数的参数;

实参与形参个数不匹配问题

  • 实参多余形参:
    • 多处的实参不会被使用
  • 形参 多余 实参 :
    • 多余的形参值为 undefined , 最后的结果为 NaN
1
2
3
4
5
6
7
8
function sum_number(start, end) {
var num = 0;
for (var i = start; i <= end; i++) {
num += i;
}
return num;
}
console.log(sum_number(1, 10)) // 55

2. arguments 的使用

arguments: 在不确定参数个数时,可以使用 arguments 来存储所有的实参,其返回结果是一个 伪数组

伪数组(不是一个真正的数组):

  1. 具有数组的 length 属性;
  2. 按照索引的方式进行存储的;
  3. 它没有真正数组的某些方法;
获取任意个数中的最大值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function sum_number() {
var num_list = arguments;
var num_max = num_list[0];
for (var i = 1; i < num_list.length; i++) {
if (num_max < num_list[i]) {
num_max = num_list[i];
}
}
return num_max;
}
var max = sum_number(1, 2, 44, 0, 12, -8)
console.log(max) // 44
var max = sum_number(32, 33, 1, 6, 88)
console.log(max) // 88

案例

冒泡排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function paixu(newList) {
var list = newList;
for (var i = 0; i < list.length - 1; i++) {
for (var j = 0; j < list.length - i; j++) {
if (list[j] > list[j + 1]) {
var num = list[j];
list[j] = list[j + 1];
list[j + 1] = num;
}
}
}
return list;
}
var max = paixu([1, 2, 44, 0, 12, -8])
console.log(max) // [-8, 0, 1, 2, 12, 44]
var max = paixu([32, 33, 1, 6, 88])
console.log(max) // [1, 6, 32, 33, 88]

函数调用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function inRunYear(year) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
flag = true;
} else {
flag = false;
}
return flag;
}

function backDay() {
var year = prompt("请输入年份?");
if (inRunYear(year)) {
alert(year + "年2月有29天。");
} else {
alert(year + "年2月有28天。");
}
}
backDay()

3. 函数2种声明方式

利用函数关键字 自定义申明

1
2
3
function fn(){
// 函数体
}

函数表达式 ( 匿名函数 )

1
2
3
4
5
6
var fn = function(){
// 函数体
}

// 调用
fu();