美文网首页
数据类型

数据类型

作者: 混吃等死小前端 | 来源:发表于2019-12-19 11:26 被阅读0次

    数据类型

    1、Number:JavaScript不区分整数和浮点数

    123; // 整数123
    0.456; // 浮点数0.456
    1.2345e3; // 科学计数法表示1.2345x1000,等同于1234.5
    -99; // 负数
    NaN; // NaN表示Not a Number,当无法计算结果时用NaN表示
    Infinity; // Infinity表示无限大,当数值超过了JavaScript的Number所能表示的最大值时,就表示为Infinity
    
    NaN === NaN; // false
    isNaN(NaN); // true,判断是否为NaN
    

    2、字符串:'xx'、"dd"
    3、布尔值

    false && true && false; // 这个&&语句计算结果为false
    
    false || true || false; // 这个||语句计算结果为true
    

    4、null和undefined
    5、数组(是一种特殊的对象)
    6、对象

    ES6新增数据类型

    1、Map:是一组键值对的结构,具有极快的查找速度

    举个例子,假设要根据同学的名字查找对应的成绩
    ①用Array实现

    //给定一个名字,要查找对应的成绩,就先要在names中找到对应的位置,再从scores取出对应的成绩,Array越长,耗时越长
    var names = ['Michael', 'Bob', 'Tracy'];
    var scores = [95, 75, 85];
    

    ②、用Map实现

    //只需要一个“名字”-“成绩”的对照表,直接根据名字查找成绩,无论这个表有多大,查找速度都不会变慢
    var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);
    m.get('Michael'); // 95
    

    map用法:

    var m = new Map(); // 空Map
    m.set('Adam', 67); // 添加新的key-value
    m.set('Bob', 59);
    m.has('Adam'); // 是否存在key 'Adam': true
    m.get('Adam'); // 67
    m.delete('Adam'); // 删除key 'Adam'
    m.get('Adam'); // undefined
    

    由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉:

    var m = new Map();
    m.set('Adam', 67);
    m.set('Adam', 88);
    m.get('Adam'); // 88
    

    2、Set:也是一组key的集合,但不存储value。由于key不能重复,所以,在Set中,没有重复的key

    var s1 = new Set(); // 空Set
    var s2 = new Set([1, 2, 3]); // 含1, 2, 3
    
    //重复元素在Set中自动被过滤
    var s = new Set([1, 2, 3, 3, '3']);//注意数字3和字符串'3'是不同的元素。
    s; // Set {1, 2, 3, "3"}
    
    //通过add(key)方法可以添加元素到Set中,可以重复添加,但不会有效果
    s.add(4);
    s; // Set {1, 2, 3, 4}
    s.add(4);
    s; // 仍然是 Set {1, 2, 3, 4}
    
    //通过delete(key)方法可以删除元素
    var s = new Set([1, 2, 3]);
    s; // Set {1, 2, 3}
    s.delete(3);
    s; // Set {1, 2}
    

    iterable类型(ES6):Array、Map和Set

    1、for...of:只循环集合本身的元素

    var a = ['a', 'b', 'c'];
    var s = new Set(['A', 'B', 'C']);
    var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
    
    for (var x of a) { // 遍历Array
        console.log(x);//a,b,c
    }
    for (var x of s) { // 遍历Set
        console.log(x);//A,B,C
    }
    for (var x of m) { // 遍历Map
        console.log(x);//1,x      2,y            3,z
        console.log(x[0] + '=' + x[1]);//1=x,2=y,3=z
    }
    

    2、forEach推荐使用

    var a = ['A', 'B', 'C'];
    a.forEach(function (element, index, array) {
        // element: 指向当前元素的值
        // index: 指向当前索引
        // array: 指向Array对象本身
        console.log(element + ', index = ' + index);
      /*
          A, index = 0
          B, index = 1
          C, index = 2
     */
    
    var s = new Set(['A', 'B', 'C']);
    s.forEach(function (element, sameElement, set) {
    //Set没有索引,因此回调函数的前两个参数都是元素本身
        console.log(element);
    /*
          A
          B
          C
    */
    });
    });
    
    
    var m = new Map([[1, 'x'], [2, 'y'], [3, 'z']]);
    m.forEach(function (value, key, map) {
    //value: x,y,z
    //key: 1,2,3
        console.log(value);
    });
    

    相关文章

      网友评论

          本文标题:数据类型

          本文链接:https://www.haomeiwen.com/subject/bmxmnctx.html