zoukankan      html  css  js  c++  java
  • javascript学习3、数据类型、数据类型转换、运算符

    数据类型包括:基本数据类型和引用数据类型

    基本数据类型指的是简单的数据段,引用数据类型指的是有多个值构成的对象。

    当我们把变量赋值给一个变量时,解析器首先要确认的就是这个值是基本类型值还是引用类型值

    一.基本数据类型

    1. number

    var a = 123;
    //typeof 检查当前变量是什么数据类型
    console.log(typeof a)
    //特殊情况
    var a1 = 5/0;
    console.log(typeof e1) //Infinity 无限大. number类型

    2. string

    var str  = '123'
    console.log(typeof str)

    3. boolean

    var b1 = false;
    console.log(typeof b1)

    4. null

    var c1 = null;//空对象. object
    console.log(c1)

    5. undefined

    var d1;
    //表示变量未定义
    console.log(typeof d1)

    二.常用内置属性

    String       --> 相当于Python 字符串
    Array        --> 相当于Python 列表
    Date         --> 相当于Python time

    Math         -->相当于Python random

    所谓内置对象就是ECMAScript提供出来的一些对象,我们知道对象都是有相应的属性和方法

    1.字符串String

    字符串方法

    (1) chartAt() 返回指定索引的位置的字符

    var str = 'alex';
    var charset = str.charAt(1);
    console.log(charset);//l

    (2) concat 返回字符串值,表示两个或多个字符串的拼接

    var str1 = 'al';
    var str2  = 'ex';
    console.log(str1.concat(str2,str2));//alexex

    (3) replace(a,b) 将字符串a替换成字符串b

    var a = '1234567755';
    var newStr = a.replace("4567","****");
    console.log(newStr);//123****755

    (4) indexof() 查找字符的下标,如果找到返回字符串的下标,找不到则返回-1 。跟seach()方法用法一样

    var str = 'alex';
    console.log(str.indexOf('e'));//2
    console.log(str.indexOf('p'));//-1

    (5) slice(start,end) 提取一个字符串的一部分,并返回一新的字符串。左闭右开 分割字符串

    var str = '小马哥';
    console.log(str.slice(1,2));//马

    (6) split('a',1) 以字符串a分割字符串,并返回新的数组。如果第二个参数没写,表示返回整个数组,如果定义了个数,则返回数组的最大长度

    var  str =  '我的天呢,a是嘛,你在说什么呢?a哈哈哈';
    console.log(str.split('a'));//["我的天呢,", "是嘛,你在说什么呢?", "哈哈哈"]

    (7) substr(start,length) 返回一个字符串中从指定位置开始到指定字符数的字符。 

    var  str =  '我的天呢,a是嘛,你在说什么呢?a哈哈哈';
    console.log(str.substr(0,4));//我的天呢

    (8) toLowerCase()转小写

    var str = 'XIAOMAGE';
    console.log(str.toLowerCase());//xiaomage

    (9) toUpperCase()转大写

    var str = 'xiaomage';
    console.log(str.toUpperCase());

    (10) substring(indexStart,indexEnd) 提取字符串中介于两个指定下标之间的字符。返回的子串包括 开始 处的字符,但不包括 结束 处的字符

    • 如果 indexStart 等于 indexEndsubstring 返回一个空字符串。
    • 如果省略 indexEndsubstring 提取字符一直到字符串末尾。
    • 如果任一参数小于 0 或为 NaN,则被当作 0。
    • 如果任一参数大于 stringName.length,则被当作 stringName.length
    • 如果 indexStart 大于 indexEnd,则 substring 的执行效果就像两个参数调换了一样

    (11) trim() 去除字符串两边的空白

    特别:

    //1.将number类型转换成字符串类型
    var num = 132.32522;
    var numStr = num.toString()
    console.log(typeof numStr)

    //四舍五入
    var newNum = num.toFixed(2)
    console.log(newNum)

    2.数组Array

    (1) 数组的创建方式

    • 字面量方式创建(推荐大家使用这种方式,简单粗暴)
    var colors = ['red','color','yellow'];
    • 使用构造函数(后面会讲)的方式创建 使用new关键词对构造函数进行创建对象
    var colors2 = new Array();

    (2) 数组的赋值

    var arr = [];
    //通过下标进行一一赋值
    arr[0] = 123;
    arr[1] = '哈哈哈';
    arr[2] = '嘿嘿嘿'

    (3) 数组的常用方法

    (3.1) 数组的合并 concat()

    var north = ['北京','山东','天津'];
    var south = ['东莞','深圳','上海'];
            
    var newCity = north.concat(south);
    console.log(newCity)

    (3.2) join() 将数组中的元素使用指定的字符串连接起来,它会形成一个新的字符串

    var score = [98,78,76,100,0];
    var str = score.join('|');
    console.log(str);//98|78|76|100|0

    (3.3) 将数组转换成字符串 toString()

    var score = [98,78,76,100,0];
    //toString() 直接转换为字符串  每个元素之间使用逗号隔开
               
    var str = score.toString();
    console.log(str);//98,78,76,100,0

    (3.4) slice(start,end); 返回数组的一段,左闭右开

    var arr = ['张三','李四','王文','赵六'];
    var newArr  = arr.slice(1,3);
    console.log(newArr);//["李四", "王文"]

    (3.5) pop 删除数组的最后一个元素并返回删除的元素

    var arr = ['张三','李四','王文','赵六'];
    var item = arr.pop();
    console.log(arr);//["张三", "李四","王文"]
    console.log(item);//赵六

    (3.6) push() 向数组末尾添加一个元素或多个元素,并返回新的长度

    var arr = ['张三','李四','王文','赵六'];
    var newLength= arr.push('小马哥');//可以添加多个,以逗号隔开
    console.log(newLength);//5
    console.log(arr);//["张三", "李四","王文","赵六","小马哥"]
    
    

    (3.7) reverse() 翻转数组

    var names = ['alex','xiaoma','tanhuang','angle'];
           
    //4.反转数组
    names.reverse();
    console.log(names);

    (3.8) sort对数组排序

    var names = ['alex','xiaoma','tanhuang','abngel'];
    names.sort();
    console.log(names);// ["alex", "angle", "tanhuang", "xiaoma"]

    (3.9) 判断是否为数组:isArray()

     布尔类型值 = Array.isArray(被检测的值) ;

    (3.10) shift() 删除并返回数组的第一个元素

    (3.11) unshift() 向数组的开头添加一个或更多元素,并返回新的长度

    3.object

    三、数据类型转换

    (1).将数值类型转换成字符串类型

    隐式转换

    var n1 = 123;
    var n2 = '123';
    var n3 = n1+n2;
    // 隐式转换
    console.log(typeof n3);

    强制类型转换

    复制代码
    var n1 = 123;
    // 强制类型转换String(),toString() var str1 = String(n1); console.log(typeof str1); var num = 234; console.log(num.toString())
    复制代码

    (2).将字符串类型转换成数值类型

    复制代码
    var  stringNum = '789.123wadjhkd';
    var num2 =  Number(stringNum);
    console.log(num2)
    
    // parseInt()可以解析一个字符串 并且返回一个整数
    console.log(parseInt(stringNum))
    console.log(parseFloat(stringNum));
    复制代码

    (3).任何数据类型都可以转换为boolean类型

    复制代码
    var b1 = '123'; 
    var b2 = 0;
    var b3 = -123
    
    var b4 = Infinity; 
    var b5 = NaN;
    
    var b6; //undefined
    var b7 = null;
    
    // 非0既真
    console.log(Boolean(b7))

    四.运算符

    js中的运算符跟python中的运算符有点类似,但也有不同。所谓运算,在数学上,是一种行为,通过已知量的可能的组合,获得新的量。

    (1)赋值运算符

    以var x = 12,y=5来演示示例|

    (2)算数运算符

    var a = 5,b=2

    (3)比较运算符

    var x = 5;

    (4)特殊情况

    字符串拼接+字符串运算 特殊情况。python中有拼接字符串中更简便的办法,其实在js中也有,大家可以百度引擎搜索es6模板字符串。(扩展)

    复制代码
    var  firstName  = '小';
    var lastName = '马哥';
    var name = '伊拉克';
    var am = '美军';
    // 字符串拼接
    var str = "2003年3月20日,"+name+"战争爆发,以美军为主的联合部队仅用20多天就击溃了萨达姆的军队。这是继十多年前的海湾战争后,"+am+"又一次取得的大规模压倒性军事胜利。"
    var fullStr = str;
    console.log(fullStr)
    
    var fullName = firstName +" "+ lastName;
    console.log(fullName)
    复制代码
    // 不能对字符串进行+运算 只能拼接
    var a1 = '1';
    var a2 = '2';
    console.log(a1+a2) //12
    var b1 = 'one';
    var b2  = 'two';
    
    // NaN. ==== not a number 是number类型
    console.log(typeof(b1*b2))

    5.Date日期对象

    创建日期对象只有构造函数一种方式,使用new关键字

    //创建了一个date对象
    var myDate = new Date();

    //创建日期对象
    var myDate=new Date();
            
    //获取一个月中的某一天
    console.log(myDate.getDate());
    
    //返回本地时间
    console.log(myDate().toLocalString());//2018/5/27 下午10:36:23

    写个函数获取时间如:2019年06月06日 17:47:32

    function getTime() {
        var date_obj= new Date();
        var year=date_obj.getFullYear();
        var month=date_obj.getMonth()+1;
        var day=date_obj.getDate();
        var hour=date_obj.getHours();
        var minute=date_obj.getMinutes();
        var seconds=date_obj.getSeconds();
        var week=date_obj.getDay();
    
    
        return year+"年"+month+"月"+f(day)+"日"+" "+hour+": "+minute+" :"+seconds+" "+num_week(week)
    }
    //Date方法:
    alert(getTime());
    
    function f(num) {
        if (num<10){
             return "0"+num;
        }
        return num;
    }
    function num_week(n) {
        week=["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]
        return week[n]
    }

    注意:以上getxxx的方法都是对时间的获取,如果要设置时间,使用setxxx,请参考链接:http://www.runoob.com/jsref/jsref-obj-date.html

    6.Math 内置对象

    常用内置对象

     6.1 Math.ceil() 向上取整,'天花板函数'

    var x = 1.234;
    //天花板函数  表示大于等于 x,并且与它最接近的整数是2
    var a = Math.ceil(x);
    console.log(a);//2

    6.2 Math.floor 向下取整,'地板函数'

    var x = 1.234;
    // 小于等于 x,并且与它最接近的整数 1
    var b = Math.floor(x);
    console.log(b);//1

    6.3 求两个数的最大值和最小值

    //求 两个数的最大值 最小值
    console.log(Math.max(2,5));//5
    console.log(Math.min(2,5));//2

    6.4 随机数 Math.random()

    var ran = Math.random();
    console.log(ran);[0,1)

    //0-100随机数
    var num=Math.random()*100
    console.log(Math.round(num))

    如果让你取100-200之间的随机数,怎么做?

    背过公式:min - max之间的随机数: min+Math.random()*(max-min)

    以上是咱们介绍的JS常用对象的方法,如果想参考更多内容,请参考链接:http://www.runoob.com/jsref/jsref-tutorial.html

  • 相关阅读:
    LeetCode对撞指针汇总
    167. Two Sum II
    215. Kth Largest Element in an Array
    2018Action Recognition from Skeleton Data via Analogical Generalization over Qualitative Representations
    题解 Educational Codeforces Round 84 (Rated for Div. 2) (CF1327)
    题解 JZPKIL
    题解 八省联考2018 / 九省联考2018
    题解 六省联考2017
    题解 Codeforces Round #621 (Div. 1 + Div. 2) (CF1307)
    题解Codeforces Round #620 (Div. 2)
  • 原文地址:https://www.cnblogs.com/xiaozhiqi/p/10974090.html
Copyright © 2011-2022 走看看