JavaScript数组

声明数组

  1. 通过new创建数组
  2. 省略new运算符创建数组
  3. 数组常量进行赋值。(JS一般使用中括号[]);
1
2
3
4
5
6
var arr = new Array(100, true, "hello");
var arr = Array(100, true, "hello");
var arr = [100, true, "hello"];
//声明长度为10的数组,数组中没有数据。
var arr = new Array(10);
var arr = Array(10);

数组的属性:

  • 数组.length 返回值数组【元素】的个数。

元素:

  • 访问数组的元素:

  • 数组[下标]; 下标是从0开始的。

  • 数组和循环是天生一对。

    • for循环
    • for…in循环 快速遍历

Math.random() 随机数

1
2
3
4
5
6
7
8
9
var random = new Array(10);
for(var i = 0; i<10;i++){
random[i]=parseInt(Math.random()*10);
}
document.write(random);

for (var i in random){
document.write(random[i]+"<br/>");
}

数组的方法

  • 栈结构

    • push
      • 功能:给数组的末尾添加元素。
      • 格式:数组.push(参数1, 参数2…);
      • 返回值:插完元素以后数组的长度。
    • pop
      • 功能:从数组末尾取下一个元素
      • 格式:数组.pop()
      • 参数:没有参数
      • 返回值:取下一个元素
  • 队列

    • push
    • shift
      • 功能:从数组的头部取下一个元素
      • 格式:数组.shift()
      • 参数:没有参数
      • 返回值:取下的元素
    • unshift
      • 功能:从数组的头部插入元素
      • 格式:数组.unshift(参数1, 参数2…)
      • 返回值:插完元素以后数组的长度。
  • reverse 逆序

  • sort

    • 功能:默认从小到大排序,按照字符串排序。

    • 格式:数组.sort()

    • 参数:一个函数,代表要怎么去进行排序(固定用法)

      1. 按照数字从小到大

        arr.sort(function(value1, value2){
                    return value1 - value2;
        })
      2. 按照数字从大到小

        arr.sort(function(value1, value2){
                    return value2 - value1;
         })
  • splice()

    • 功能:可以完成 增、删、改三个功能
    • 格式:数组.splice(start, length, 数据1, 数据2…);
    • 参数:
      • start 开始截取的位置
      • length 截取的元素的长度
      • 第三个参数开始:在start位置,插入的元素。
    • 返回值:截取下来的元素组成的数组。
  • concat

    • 功能:拷贝数组,生成一个新数组(不会修改原数组)
    • 合并数组,如果参数是数组,数组中元素单独合并
  • slice

    • 功能:数组提取元素(不会修改原数组)
    • 格式:数组.slice(start, end); [start, end)
  • join()

    • 功能:将数组中的元素,用传入的拼接符,拼接成一个字符串
    • 格式:数组.join(“字符串”)
    • 返回值:拼接好的字符串。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
// 创建数组
var countries = new Array("china", "usa", "uk", 'japan');
document.write(countries + "<br/>");
// china, usa, uk, japan

//栈结构

/* push
功能:给数组的末尾添加元素。
格式:数组.push(参数1, 参数2…);
返回值:插完元素以后数组的长度。 */
document.write("push返回值:" + countries.push("korea", "russia") + " 原数组:" + countries + "<br/>")
// push返回值:6 原数组:china, usa, uk, japan, korea, russia

/* pop
功能:从数组末尾取下一个元素
格式:数组.pop()
参数:没有参数
返回值:取下一个元素 */
document.write("pop返回值:" + countries.pop() + " 原数组:" + countries + "<br/>")
// pop返回值:russia 原数组:china, usa, uk, japan, korea


//队列

// push
/* shift
功能:从数组的头部取下一个元素
格式:数组.shift()
参数:没有参数
返回值:取下的元素 */
document.write("shift返回值:" + countries.shift() + " 原数组:" + countries + "<br/>")
// shift返回值:china 原数组:usa, uk, japan, korea

/* unshift
功能:从数组的头部插入元素
格式:数组.unshift(参数1, 参数2…)
返回值:插完元素以后数组的长度。 */
document.write("unshift返回值:" + countries.unshift("thailand") + " 原数组:" + countries + "<br/>")
// unshift返回值:5 原数组:thailand, usa, uk, japan, korea


// 1.concat() 方法可以基于当前数组创建一个新数组。
var co = [1, 2, 3]
document.write("concat返回值:" + countries.concat() + " 原数组:" + countries + "<br/>")
// concat返回值:thailand, usa, uk, japan, korea 原数组:thailand, usa, uk, japan, korea

document.write("concat返回值:" + countries.concat(co) + " 原数组:" + countries + "<br/>")
// concat返回值:thailand, usa, uk, japan, korea, 1, 2, 3 原数组:thailand, usa, uk, japan, korea

// 2.slice() 方法可以基于当前数组获取指定区域元素[start, end)
document.write("slice返回值:" + countries.slice(0, 2) + " 原数组:" + countries + "<br/>")
// slice返回值:thailand, usa 原数组:thailand, usa, uk, japan, korea

// 3.splice() 方法由于其参数的特殊性,可以完成 增、删、改三个功能

document.write("splice返回值:" + countries.splice(1, 0, "india") + " 原数组:" + countries + "<br/>")
// splice返回值: 原数组:thailand, india, usa, uk, japan, korea
document.write("splice返回值:" + countries.splice(1, 2) + " 原数组:" + countries + "<br/>")
// splice返回值:india, usa 原数组:thailand, uk, japan, korea
document.write("solice返回值:" + countries.splice(0, 1, "poland") + " 原数组:" + countries + "<br/>")
// solice返回值:thailand 原数组:poland, uk, japan, korea

// 4.join() 方法用数组元素组成字符串。
document.write("join返回值:" + countries.join("-") + " 原数组:" + countries + "<br/>")
// join返回值:poland - uk - japan - korea 原数组:poland, uk, japan, korea

// 5.reverse() 逆向排序
document.write("reverse返回值:" + co.reverse() + " 原数组:" + co + "<br/>")
// reverse返回值:3, 2, 1 原数组:3, 2, 1

// 6.sort() 从小到大排序,字符串排序
document.write("sort返回值:" + co.sort() + " 原数组:" + co + "<br/>")
// sort返回值:1, 2, 3 原数组:1, 2, 3
document.write("sort返回值:" + co.sort(function (value1, value2) { return value1 - value2 }) + " 原数组:" + co + "<br/>")
// sort返回值:1, 2, 3 原数组:1, 2, 3
document.write("sort返回值:" + co.sort(function (value1, value2) { return value2 - value1 }) + " 原数组:" + co + "<br/>")
// sort返回值:3, 2, 1 原数组:3, 2, 1