学习 准备 尝试 谨慎小心

0%

230-Web/javascript/JavaScript基础数据类型2

数组 Array

定义

1
var arr1 = ["周一", "周二", "周三"];
2
var arr2 = new Array("2019年", "2020年", "2021年");

属性

Array 具有 length 属性,即可获取也可设置。

1
// 获取数据长度
2
var arrayLength = arr.length;
3
// 设置数组长度(超出数组长度的元素将被抛弃)
4
arr.length = 2;

方法

  • pop(); // 取出并删除数组最后一个元素

  • push(element); // 在数组末尾追加元素

  • shifit(); // 取出并删除数组第一个元素

  • unshift(element); // 在数组开头添加元素

  • indexOf(element); // 查找元素的第一个位置

  • lastIndexOf(element); // 查找元素的最后一个位置

  • splice(start, length, [e1, ...]);

    // 从start位置开始删除length个元素,并插入后面的参数元素(相当于替换)

    1
    var arr1 = [2, 4, 6];
    2
    arr1.splice(1, 2, 1, 3, 5);
    3
    console.log(arr1);	// 输出 '[2, 1, 3, 5]'
  • join(char); // 数组元素以字符相连接,并返回字符串

  • sort([fn]); // 默认把元素看做字符串自然排序,也可传入函数自定义排序

    1
    var arr2 = [3, 5, 2, 9];
    2
    arr2.sort(function(n1, n2) {
    3
    	return n1 - n2;	// 前者大于后者,升序排列
    4
    });
    5
    console.log(arr2);	// 输出 '[2, 3, 5, 9]'

遍历

1
var arr = ['冰箱', '电视', '手机'];
2
// 第1种遍历
3
for (var i=0; i<arr.length; i++) {
4
    console.log(i, arr[i]);
5
}
6
7
// 第2种遍历
8
arr.forEach(function(item, index, array){
9
    console.log(index, item);
10
})

扩展

  • 查询元素在数组中的位置

对象 Object

函数 function

一个函数应该只返回一种类型的值。

函数中有一个默认的数组变量arguments,存储着传入函数的所有参数。为了使用函数参数方便,建议给参数起个名字。

1
function fun1(obj, name, value){
2
    console.log(arguments);
3
    console.log(obj);
4
    console.log(name);
5
    console.log(value);
6
}
7
fun1({'id':12}, 'username', '张三');

日期 Date

定义

1
var date1 = new Date();
2
var date2 = new Date(timestamp);	// timestamp 毫秒单位的时间戳
3
var date3 = new Date(year, month-1, dayOfMonth, hour, minute, second);

方法

  • getFullYear();  //获取年份
  • getMonth();    //获取月份,月份从0开始,即0表示1月,1表示2月,以此类推
  • getDate();    //获取当前月份的第几日
  • getHours();   //时
  • getMinutes();  //分
  • getSeconds();  //秒
  • getTime(); // 毫米级时间戳

扩展

1
/**
2
 * 扩展Date对象的功能
3
 * @param format
4
 * @returns
5
 * @example  (new Date()).format('yyyy-MM-dd hh:mm:ss')    结果是 2018-08-13 08:42:34 这样的格式 ;
6
 */
7
Date.prototype.format = function (format) {
8
    var o = {
9
        "M+": this.getMonth() + 1, // month
10
        "d+": this.getDate(), // day
11
        "h+": this.getHours(), // hour
12
        "m+": this.getMinutes(), // minute
13
        "s+": this.getSeconds(), // second
14
        "q+": Math.floor((this.getMonth() + 3) / 3), // quarter
15
        "S": this.getMilliseconds()
16
        // millisecond
17
    }
18
    if (/(y+)/.test(format)) {
19
        format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
20
    }
21
    for (var k in o) {
22
        if (new RegExp("(" + k + ")").test(format)) {
23
            format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
24
        }
25
    }
26
    return format;
27
}
28
29
/**
30
 * 扩展Date对象的功能
31
 * 获取上一个月日期对象
32
 * @param date
33
 * @returns {Date}
34
 */
35
Date.prototype.getPreMonth = function() {
36
    var year = this.getFullYear();
37
    var month = this.getMonth()+1;
38
    var day = this.getDate();
39
    var hour = this.getHours();
40
    var minute = this.getMinutes();
41
    var second = this.getSeconds();
42
    
43
    var y = year;
44
    var m = parseInt(month) - 1;
45
    if (m == 0) {    // 如果是一月
46
        y = parseInt(y) - 1;
47
        m = 12;
48
    }
49
    
50
    var monthDays = new Date(y, m, 0).getDate(); //获取 m 月的天数
51
    var d = day;
52
    if (d > monthDays) {
53
        d = monthDays;
54
    }
55
    return new Date(y, m-1, d, hour, minute, second);
56
}
57
58
59
/**
60
 * 扩展Date对象的功能
61
 * 获取下一个月的日期
62
 * @param date
63
 * @returns {Date}
64
 */
65
Date.prototype.getNextMonth = function(){
66
    var year = date.getFullYear();
67
    var month = date.getMonth()+1;
68
    var day = date.getDate();
69
    var hour = date.getHours();
70
    var minute = date.getMinutes();
71
    var second = date.getSeconds();
72
    
73
    var y = year;
74
    var m = parseInt(month) + 1;
75
    if (m == 13) {
76
        y = parseInt(y) + 1;
77
        m = 1;
78
    }
79
    
80
    var d = day;
81
    var monthDays = new Date(y, m, 0).getDate(); // 获取 m 月的天数
82
    if (d > monthDays) {
83
        d = monthDays;
84
    }
85
    return new Date(y, m-1, d, hour, minute, second);
86
}