ES6 set集合 map 数值扩展 对象方法扩展

set集合

// 声明一个 set
        let s = new Set();
        let s2 = new Set(['1', '2', '3', '1']);
        console.log(s, typeof s);
        // 添加新的元素
        s2.add('4');
        // 删除元素
        s2.delete('1');
        // 检测
        console.log(s2.has('3'));
        // 遍历
        for (let v of s2) {
            console.log(v);
        }
        // 清空
        s2.clear();
        // 元素个数
        console.log(s2.size);
        console.log(s2);
 let arr = [1, 2, 3, 4, 5, 5, 4, 3, 2, 6];
        console.log(arr);
        //数组去重
        let res = [...new Set(arr)];
        console.log(res);

        // 交集
        let arr2 = [4, 5, 6, 4, 5, 7, 8];
        let res1 = new Set(arr);
        console.log(res1);
        let res2 = [...new Set(arr2)].filter(item =>
            new Set(arr).has(item)
        );
        console.log(res2);

        // 并集
        let union = [...new Set([...arr, ...arr2])]
        console.log(union);
        // 差集
        let diff1 = [...new Set(arr2)].filter(item =>
            !(new Set(arr).has(item))
        );
        console.log(diff1);
        let diff2 = [...new Set(arr)].filter(item =>
            !(new Set(arr2).has(item))
        );
        console.log(diff2);

map

// 声明map
        let m = new Map();

        //添加元素
        m.set('name', 'tom');
        m.set('change', function() {
            console.log('change');
        })
        let key = {
            school: 'qiqiqi'
        };
        m.set(key, ['shanghai', 'beijing', 'wuhan'])

        // 删除
        //m.delete('name')
        // 获取
        console.log(m.get('change'));
        console.log(m.get(key));
        // 清空
        //m.clear();

        //遍历
        for (let v of m) {
            console.log(v);
        }
        m.change()

        console.log(m.size);
        console.log(m);

数值扩展

//0. Number.EPSILON 是 JavaScript 表示的最小精度
        //EPSILON 属性的值接近于 2.2204460492503130808472633361816E-16
        function equal(a, b) {
            if (Math.abs(a - b) < Number.EPSILON) {
                return true;
            } else {
                return false;
            }
        }
        console.log(0.1 + 0.2 === 0.3);
        console.log(equal(0.1 + 0.2, 0.3))

        //1. 二进制和八进制
        let b = 0b1010;
        let o = 0o777;
        let d = 100;
        let x = 0xff;
        console.log(x);

        //2. Number.isFinite  检测一个数值是否为有限数
        console.log(Number.isFinite(100));
        console.log(Number.isFinite(100 / 0));
        console.log(Number.isFinite(Infinity));

        //3. Number.isNaN 检测一个数值是否为 NaN 
        console.log(isNaN('hello'));
        console.log(Number.isNaN());
        //4. Number.parseInt Number.parseFloat字符串转整数
        console.log(Number.parseInt('5211314love'));
        console.log(Number.parseFloat('3.1415926神奇'));

        //5. Number.isInteger 判断一个数是否为整数
        console.log(Number.isInteger(5));
        console.log(Number.isInteger(2.5));

        //6. Math.trunc 将数字的小数部分抹掉  
        console.log(Math.trunc(3.5));

        //7. Math.sign 判断一个数到底为正数 负数 还是零
        console.log(Math.sign(100)); // 返回1
        console.log(Math.sign(0)); // 返回 0
        console.log(Math.sign(-20000)); // 返回-1

对象方法扩展

// 1 object.is 判断两个值是否完全相等
        console.log(Object.is(120, 120));
        console.log(Object.is(NaN, NaN));
        // 2 Object.assign 对象的合并
        const config1 = {
            host: 'localhost',

        };
        const config2 = {
            host: '127.0.0.1',
            port: 33060,
            name: 'nihao',
            test: '123'
        }
        console.log(Object.assign(config1, config2));

        // 3 Object.setPrototypeOf 设置原型对象 
        const school = {
            name: '尚硅谷',
        }
        const cities = {
            city: ['beijing', 'shanghai', 'shenzhen']
        }
        Object.setPrototypeOf(school, cities);
        console.log(Object.getPrototypeOf(school));
        console.log(school);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值