04-部分数据类型转换

不管现实多么惨不忍睹,都要持之以恒地相信,这只是黎明前短暂的黑暗而已。不要惶恐眼前的难关迈不过去,不要担心此刻的付出没有回报,别再花时间等待天降好运。真诚做人,努力做事!你想要的,岁月都会给你。04-部分数据类型转换,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <!-- 
        数据类型转换又分为显示转换和隐式转换
     -->
    <script>
        //  显示转换主要用到的三个API
        //  Number:将数据类型转换为number类型,String:转换为string类型;Boolean;转换为boolean类型
        console.log(Number('1'));//1
        console.log(Number('1a'));//NaN
        console.log(Number(''));//0
        // 布尔类型
        console.log(Number(true));//1
        console.log(Number(false));//0
        //null
        console.log(Number(null));//0
        //undefined
        console.log(Number(undefined));//NaN
        //Number--转换的对象不为基本数据类型时
        //数组;
        console.log(Number([]));//0
        //对象
        console.log(Number({}));//NaN
        //函数
        console.log(Number(function () { }));//NaN
        console.log(Number(function(){}));//NaN
        //String--转换的对象为基本数据类型时
        //数字
        console.log(String(123));//'123'
        //布尔类型
        console.log(String(true));//'true'
        console.log(String(false));//'false'
        //null
        console.log(String(null)); 'null'
        //undefined
        console.log(String(undefined));//'undefined'
        //String--转换的对象不为基本数据类型时;
        //数组
        console.log(String([]));//''
        //对象
        console.log(String({}));//"[object Object]"
        //函数
        console.log(String(function () { }));//'function(){}'
        //Boolean
        //布尔类型的转换除了下面的情况返回false外。其余一律返回true
        //空字符串'' 数字0和NaN   undefined null 布尔值false
        //隐式转换 一般用到隐式转换的地方在于条件判断 比较运算和加法运算中
        if (0) {
            console.log(1);
        }
        if ('0') {
            console.log(1);
        }
        //在进行‘+’法运算的时候规则有如下;
        //1.一元运算符;进行Number()操作
        console.log(Number(+1));
        console.log(Number(+[]));
        console.log(Number(+{}));//NaN
        //2.二元操作符
        //a.在都为基本数据类型的情况;若存在字符串则优先进行加法(不为字符串类型的则隐式String转换)否则都数字加法(不为数字类型则隐式Number转换)
        console.log(1 + '2');//'12'
        console.log(true + '2'); 'true2'
        console.log(1 + true);//2
        console.log(1 + null);//1
        console.log(1 + undefined);//NaN
        //b.在存在非基本数据类型的情况下:
        //首先需要对数据进行基本类型的转换,先调用valueOf.若返回不是基本类型,再调用toString,当转换后都为基本数据类型后再按照a情况下的方法进行操作
        console.log([] + []);//''
        console.log([] + {});//'[object Object]'
        //对于{}放在左边的情况,不同的浏览器不一样,有的会当做对象,有的会当做是代码块
        //{}+{}
        //NaN 除了加法运算符(+)有可能把运算转为字符串,其他运算符都会把运算自动转成数值
        console.log('2' - '1');//1
        console.log('2' * '3');//6
        //数据比较(非恒等) 两个不同类型数据比较时隐式转换规则
        //a.数字和字符串,布尔类型,数组,对象进行比较时;
        //先转换为数字(Number),再进行比较:
        console.log(1 == '1');//true
        console.log(0 == []);//true
        console.log(1 == true);//true
        console.log(0 == {});//false
        //字符串和布尔类型 数组 对象进行比较时:
        //和布尔类型的比较时转换为数字类型进行比较
        console.log('true' == true);//false
        console.log('1' == true);//true
        console.log('' == false);//true
        console.log('o' == false);//true
        //字符串和数组 对象的比较时 转换为字符串再进行比较
        console.log('1' == [1]);//true
        console.log('' == []);//true
        console.log('1,2' == [1, 2]);//true
        console.log('' == {});//false
        console.log('[object Object]' == {});//true
        //c. undefined 和null进行非全等比较返回true 其他均返回false
        //d.数组和布尔型 数组进行比较时(和对象不相等)
        //和布尔进行比较时 转换为数字再进行比较
        console.log([] == false);//true
        console.log([1] == true);//true
        //和数组比较是比较其地址
        console.log([1] == [1]);//false
        //e.对象和布尔型不相等
        //4.条件运算都转换为布尔型


        // 数字类型转换(掌握)
        Number.parseInt()   //把值/字符串类型 强制转换成整数
        Number.parseFloat() //给定值被解析时返回数字,如果不能解析成数字 NaN 可以传输一个字符串类型的数字
        
         //字符串转换为数组的一些Api 简单类型转复杂类型
         .split() .split()
        // [...args] //展开运算符 [...args]
        // [...chars] //解构赋值  [...chars]
        .Array.from() .Array.from()
        
        //数组转换为字符串Api 复杂类型转简单类型
        .toString() .toString()
        .join() .join()

        // 将对象转换为字符串Api 复杂转简单
        .String() .String() .String()
        .JSON.stringify() .JSON.stringify() .JSON.stringify() .JSON.stringify()

        // 将字符串转对象 简单转复杂
        var str = '{"name":"小明","age":18}';
        var json = JSON.parse(str);
        var json = eval("(" + str + ")");
        var json = (new Function("return " + str))();
        console.log(json);

        // 对象转换为数组Api 复杂转复杂
        Object.values() //返回一个给定对象自身的所有可枚举属性值的数组 
        .Object.values() //返回一个给定对象自身的所有可枚举属性值的数组
        let obj = {
            'name': '前端',
            'url': 'https://www.webadkf.com',
            'des': '专注web前端开发',
        };
        // 需要对象里面的键作为数组则
        Object.keys().map(function (i) {
            return obj[i]
        })
        Object.keys().map(function(i){
            return obj[i]
        })

        //循环方式
        var arr = [];
        for(var i in obj){
            arr.push(obj[i])
        }
        var arr = [];
        for(var i in obj){
            arr.push(obj[i])
        }
        //数组转对象
        Object.assign({}, array) .Object.assign({},array) .Object.assign({},array)
        let array = [1,2,3,4,5];
        let  obj2 ={};
        obj2 = (Object.assign({}, array)) 
        console.log(obj2);
        let array2 = [3,4,2,5,8];
        let obj3 = {};
        obj3 = (Object.assign({},array2));
        console.log(obj3);
        // let array = [1,2,3,4];
        // let obj = {};
        // obj = (Object.assign({},array));
        // console.log(obj);
        //Array.from() 对一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例
          // 字符串转换为数组 split() 字符串转对象JSON.parse(str) 格式"{"name":"小明"}"
        //   数组转换为字符串Api toString() join() 对象转换为字符串 String() JSON.stringify() 对象转换为数组 Object.values()
        // 数组转对象Object.assign({},[])
        //   string Number Boolean null undefined 
    </script>
</body>

</html>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/163342.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!