zoukankan      html  css  js  c++  java
  • js对象2

    字符串相关方法

    在上一小节中,我们已经学习了什么是对象,以及对象常用的属性和方法。实际上,前面我们所 学习过的基本数据类型中,Boolean、Number和String类型的数据都可以看作是一^个对 象。既然是对象,那么肯定就有相应的属性和方法。这里大家可以仔细回忆一下,例如前面我们 所学习过的toFixed(),如下:

    let num = 10.456;

    console.log(num.toFixed(2));//10.46

    这里我们所使用到的toFixed()实际上就是num这个数字对象的一个方法。

    由于Boolean类型和Number类型的对象,所涉及的属性和方法不多,所以掌握前面那些所介绍 过的内容即可。

    这里我们主要来看一看字符串对象的相关属性和方法。

    6-2-1字符串属性

    在字符串里面有一个length属性,可以访问到该字符串里面有多少个字符

    console.log("Hello".length);//5

    6-2-2字符串方法

    访问特定字符

    有两个访问字符串中特定字符的方法,分别是c harAt ()和c harCodeAt。

    charAtO:接收一个数字参数,找到对应该下标的字符是什么

    let str = "Hello World";

    console.log(str.charAt(1));//e

    console.log(str.charAt( 'a'));//H 因为a被转为了数字0

    charCodeAtO:接收一个数字参数,找到对应该下标的字符编码是什么

    let str = "Hello World";

    console.log(str.charCodeAt(1));//101

    console.log(str.charCodeAt('a'));//72

    fromCharCode。:这个方法基本上和c harCodeAt ()执行相反的操作,如下:

    console.log(String.fromCharCode(104,101,108,108,111));//^ello

    字符串操作方法

    concatO:用于将一个或者多个字符串拼接起来,返回拼接得到的新字符串 需要注意的就是原字符串不会产生改变,拼接后的字符串以返回值的方式返回

    let str = "Hello";

    let newStr = str.concat(" World!!!"); console.log(str);//Hello console.log(newStr);//Hello World!!!

    还有一点,那就是虽然c oncatO可以用于拼接字符串,但是还是使用+号拼接的方式比较简便,使 用的情况更多一些

    slice。:和数组的slice。方法相似,接收一或者两个参数,截取字符串

    let str = "Hello World";

    let str2 = str.slice(2);

    let str3 = str.slice(2,7);//不包括7 console.log(str);//Hello World console.log(str2);//llo World console.log(str3);//llo W

    substrO:在字符串中抽取从开始下标开始的指定数目的字符,效果和slice。方法基本一样。但是 还是有一定的区别,区别就在于第二个参数,如下:

    let str = "Hello World";

    let str1 = str.slice(2);

    let str2 = str.substr(2);

    console.log(str1);//llo World

    console.log(str2);//llo World

    str1 = str.slice(2,7);//结束位置为 7,不包含7

    str2 = str.substr(2,7);//^^回的字待个数

    console.log(str1);//llo W

    console.log(str2);//llo Wor

    substringO:用于提取字符串中介于两个指定下标之间的字符。和前面的方法也是非常的相似, 但是还是有不同的地方

    let str = "Hello World";

    let strl = str.slice(2);

    let str2 = str.substr(2);

    let str3 = str.substring(2);

    console.log(strl);//Ho World

    console.log(str2);//llo World

    console.log(str3);//llo World

    str1 = str.slice(2,7);//结束位置为 7,不包含7

    str2 = str.substr(2,7);//^^回的字待个数

    str3 = str.substring(2,7);//结束位置为 7,不包含7

    console.log(str1);//llo W

    console.log(str2);//llo Wor

    console.log(str3);//llo W

    普通的传入2个参数的时候,好像substring。方法和slice。方法就是一样的方法,那么区别在什么 地方呢?区别就在于参数为负数的时候,如下:

    let str = "Hello World";

    let str1 = str.slice(-3);

    let str2 = str.substr(-3);

    let str3 = str.substring(-3);

    //slice将所有的负值和字符串的长度相加

    //substr负的第一个参数和字符串长度相加负的第二个参数转换为0

    //substring把所有的负值转换为0 substring会将较小的数作为开始 较大的数作为结束 console.log(str1);//rld

    console.log(str2);//rld

    console.log(str3);//Hello World

    str1 = str.slice(2,-3);//等徐于slice(2,8)

    str2 = str.substr(2,-3);//等徐于substr(2,0)

    str3 = str.substring(2,-3);//等徐子substring(2,0)等价于substring(0,2) console.log(str1);//llo Wo

    console.log(str2);//

    console.log(str3);//He

    字符串位置方法

    indexOf()和l astlndexOf。:这两个方法都是从一个字符串中搜索给定的子字符串,然后返回子字 符串的位置,没有找到就是返回-1,两个方法的区别在于一个是从前面开始找,一个是从后面开

    始找。

    let str = "Hello World";

    console.log(str.indexOf('l'));//2 console.log(str.lastIndexOf('l'));//9

    字符串对象中还存在一个和indexOf()方法很类似的方法,为search。方法。该方法也是用 于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。如果没有找到任何匹 配的子串,则返回-1。具体示例如下:

    let str="Visit Runoob!";

    let n=str.search("Runoob");

    console.log(n); // 6

    除了传入子字符串,还可以传入一个正则,如下:

    let str="Mr. Blue has a blue house"; console.log(str.search(/blue/i)); // 4

    查看是否包含字符

    includes。:如果包含返回true,否则返回false

    let str = "Hello World";

    console.log(str.includes("l"));//true console.log(str.includes("M"));//false

    检测开始字符和结束字符

    startsWith() endsWith()

    let str = "Hello World";

    console.log(str.startsWith("H"));//true console.log(str.endsWith("d"));//true console.log(str.endsWith("z"));//false

    去除字符串空白方法

    有一个去除字符串两端空白的方法trim。,这个在表单里面经常会用 trim。:这个方法会创建一个字符串副本,删除前置以及后缀的所有空格。

    let str = " Hello World ";

    let newStr = str.trim();

    console.log(str);//Hello World

    console.log(newStr);//Hello World

    除了trim。以外,还有trimLeft()和trimRight()方法,分别用于删除字符串开头和末尾的空格。

    重复字符串

    repeat。:里面传入要重复的次数即可

    let str = "Hello";

    console.log(str.repeat(3));

    //HelloHelloHello

    字符串大小写转换方法

    这里涉及到4个方法,分别是toLowerCase。和toLocaleLowerCase。,还有就是toUpperCase。 toLocaleUpperCase()。

    用得较多的一般就是toLowerCase。和toUpperCase。

    let str = "HELLO";

    console.log(str.toLowerCase());//hello

    str = "hello";

    console.log(str.toUpperCase());//HELLO


    6-3 JSON

    JSON,英语全称为JavaScript Object Notation。是Douglas Crockford2001 年发明的一种轻 量级数据存储格式,被很多服务用于数据序列化以及配置。JSON经常被用于Web服务之间交换 信息,也被很多网站用来共享信息,例如twitter, facebook等。JSON最大的优点在于它在人、 机可读性方面达到了一个最佳的临界点。

    经常有人会把对象字面量和JSON相混淆,认为是同一个东西。但是实际上它们之间还是有几个 关键性的区别:

    -属性名必须用双引号引起来

    允许的值包括数字,true, false, null,数组,对象以及双引号引起来的字符串

    -函数是不允许的

    例如:蝙蝠侠的JSON字符串可以表示为如下

    let batman = {

    "name" : "Batman",

    "real name" : "Bruce Wayne",

    "height" : 74,

    "weight" : 210,

    "hero" : true,

    "villain" : false,

    "allies" : ["Robin","Batgirl","Superman"]

    }

    JSON正作为一种数据存储格式变得日益的流行,很多编程语言现在都有现成的库来解析和生成 JSONES5开始,就已经有了全局的JSON对象,该对象存在方法,可以将JavaScript中的字 符串转为JSON或者将JSON转换为字符串。

    JSON对象转为字符串

    使用的方法为JSON.stringifyO,示例如下:

    let person = {

    "name" : "xiejie",

    "age" : 18,

    "gender" : "male",

    }

    let str = JSON.stringify(person);

    console.log(str);

    //{"name":"xiejie","age":18,"gender":"male"} 如果一个字面量对象里面包含了方法,那么在使用JSON.stringify()方法将其转为字符串时, 会直接忽略掉对象里面的方法,如下:

    let person = {

    name : "xiejie",

    age : 18,

    walk : function(){

    console.log("I'm walking");

    }

    }

    let str = JSON.stringify(person); console.log(str);//{"name":"xiejie","age":18}

    字符串转为J SON对象

    使用的方法为JSON.parse()方法,但是需要注意的一个问题是,当我们要将一个字符串转为 JSON对象时,必须要保证字符串的格式要和JSON的格式一模一样,否则无法进行转换,示例如 下:

    let person = '{"name":"xiejie","age":18,"gender":"male"}';

    let obj = JSON.parse(person);

    console.log(obj);

    //{ name: 'xiejie', age: 18, gender: 'male' }


    6-4 Math 对象

    ECMAScript中,Math对象是一个比较特殊的对象,它是一个静态对象。什么意思呢?就是说 这个Math和前面讲的其他类型不一样,不需要实例化,直接拿来用就可以了。

    6-4-1 Math对象常见的属性

    Math对象常见的属性如下表:

    属性

    说明

    Math.E

    自然对数的底数,即常量e的值

    Math.LNIO

    10的自然对数

    Math.LN2

    2的自然对数

    Math.LOG2E

    以2为底e的对数

    Math.LOGlOE

    以10为底e的对象

    Math.PI

    数学里面PI的值

    Math.SQRT1_2

    1/2的平方根(即2的平方根的倒数)

    Math.SQRT2

    2的平方根

    这里面用得稍微多一点的就是PI,直接拿来用即可。

    console.log(Math.PI);//3,141592653589793

    6-4-2 Math对象常见的方法

    1. min() max

    这两个方法很简单,就是求一组数值的最大值和最小值

    let max = Math.max(3,5,8,1);

    let min = Math.min(3,5,8,1);

    console.log(max);//8

    console.log(min);//1

    2.舍入方法ceil。,floorround

    ceil:执行向上舍入

    floor。:执行向下舍入

    round:四舍五入

    let num = 3.14;

    console.log(Math.ceil(num));//4

    console.log(Math.floor(num));//3

    console.log(Math.round(num));//3

    1. 随机数方法

    Math.random方法返回0-1之间的随机数,如果想显示固定范围的随机数,可以套用下面的公 式。

    =Math.floor(Math.random*可能值的总数+第一^可能的值)

    let num = Math.random();

    console.log(num);//0.24003779065523112

    //生成25-50之间的随机数

    //可能值的计算:50-25+1

    let rand = Math.floor(Math.random()*26 + 25); console.log(rand);//41

    练习:封装一个函数,这个函数接收两个参数,然后可以返回这两个参数之间的随机数

    let rand = function(x,y){

    let choice = y - x + 1;

    return Math.floor(Math.random() * choice + x);

    }

    console.log(rand(1,10));//3

    1. 其他方法

    Math对象里面还有诸如下表所示的其他方法,这里不再做一一演示

    方法说明

    Math.abs(num) 返回num的绝对值


    Math.exp(num)

    Math.log(num)

    Math.pow(num,power)

    Math.sqrt(num)

    Math.acos(x)

    Math.asin(x)

    Math.atan(x)

    Math.atan2(x)

    Math.cos(x)

    Math.sin(x)

    Math.tan(x)

    返回Math.Enum次寫

    返回num的自然对数

    返回numpower次寫

    返回num的平方根

    返回x的反余弦值

    返回x的反正弦值

    返回x的反正切值

    返回y/x的反正切值

    返回x的余弦值

    返回x的正弦值

    返回x的正切值


     


    6-5 Dat e 对象

    Date类型主要是用于处理和时间相关的操作。

    6-5-1时间戳

    在学习Date类型之前,有一个概念必须要了解,那就是时间戳。

    所谓时间戳,就是从197011000秒到现在为止的秒数。在计算机里面,进行时间的计 算都是通过时间戳来进行计算的。计算完成以后再将时间戳转换为表示时间的字符串。

    获取时间戳

    ECMAScript中比较特殊的是获取时间的精度更高一些,可以获取到的时间戳精确到了毫秒, 通过以下方式可以获取到

    let now = Date.now();

    console.log(now);//1511767644238

    如果想要得到秒数,可以使用得到的毫秒数除以1000,然后四舍五入,如下:

    let now = Date.now();

    now = Math.round(now / 1000);//毫秒除以 1000,得到描述 console.log(now);//1511767768

    6-5-2静态方法(扩展)

    可以看到,上面的Date.now()就是一个静态方法,除了这个方法以外,这里还要介绍两个静态 方法,分别是 Date.parse() Date.UTC()

    Date.parse()

    该方法用于解析一个日期字符串,参数是一个包含待解析的日期和时间的字符串,返回从1970 110点到给定日期的毫秒数

    该方法会根据日期时间字符串格式规则来解析字符串的格式,除了标准格式外,以下格式也支

    持。如果字符串无法识别,将返回NaN

    1//’如6/13/2004

    2 ' 日,年'如January 12,2004Jan 12,2004

    3 '星期月 日年时:分:秒时区,Tue May 25 2004 00:00:00 GMT-0700

    注意:浏览器不支持不表示日期只表示时间的字符串格式

    console.log(Date.parse("1990/03/23"));//638121600000

    console.log(Date.parse("March 23,1990"));//638121600000

    console.log(Date.parse("2017"));//1483228800000 console.log(Date.parse("Hello"));//NaN

    注意:在ECMAScript5中,如果使用标准的日期时间字符串格式规则的字符串中,数学前有 前置0,则会解析为UTC时间,时间没有前置0,则会解析为本地时间。其他情况一般都会解 析为本地时间

    Date.UTC()

    Date.UTC()同样返回给定日期的毫秒数,但其参数并不是一个字符串,而是分别代表年、月、 日、时、分、秒、毫秒的数字参数,说白了就是参数的形式和上面不一样。Date.UTCO方法的语 法如下:

    Date.UTC(year,month,day,hours,minutes,seconds,ms),其中 year 参数是固定的,其余参数都是 可选的,我们可以通过函数的I ength属性来查看该函数的形式参数个数

    console.log(Date.UTC.length);//7

    |注意:该方法使用的是UTC时间,而不是本地时间

    console.log(Date.UTC("1990/03/23"));//NaN

    console.log(Date.UTC(1990,3,23));//640828800000 console.log(Date.UTC(2017));//1483228800000 console.log(Date.UTC("Hello"));//NaN

    6-5-3日期对象构造函数

    日期对象的构造函数为Date。。该构造函数根据使用的不同效果也不尽相同。

    不使用new关键字

    如果不使用new关键字,那么就只是单纯的函数调用。会返回一个当前的日期和时间的字符串表 示。并且被当作函数调用时,会忽略所有传递进去的参数,如下:

    console.log(Date());

    //Mon Nov 27 2017 16:03:33 GMT+0800 (CST)

    console.log(Date("1990-03-23"));

    //Mon Nov 27 2017 16:03:33 GMT+0800 (CST)

    使用new关键字

    如果使用new关键字,那么这个时候就会返回一个对象。关于这种使用new关键字创建对象的方 式,我们会在后面进行详细的介绍,这是只是作为了解即可。

    使用new关键字但是没有传入任何参数,则会根据当前的日期时间来创建一个date对象

    let date = new Date();

    console.log(date);//2017-11-27T08:05:44.025Z

    console.log(typeof date);//object

    如果传入数字参数,则该参数表示与197011000秒之间的毫秒数,如下:

    let date = new Date(638121600000);

    console.log(date);//1990-03-22T16:00:00.000Z

    可以接收多个数字参数,这个时候形式有点类似于Date.UTC()这个方法,不过返回的是一个对 象,而不是毫秒数。

    let date = new Date(1990,3,23);

    console.log(date);//1990-04-22T15:00:00.000Z

    如果传入的是字符串参数,则返回该日期对象。如果字符串不能被解析为日期,则返回I nvalid

    Date

    let date = new Date("1990-03-23");

    console.log(date);//1990-03-23T00:00:00.000Z let date2 = new Date("Hello");

    console.log(date2);//Invalid Date

    6-5-5实例方法

    Date对象没有可以直接读写的属性,所有对日期和时间的访问都需要通过方法。

    Date对象的大多数方法分为两种形式:一种是使用本地时间,一种是使用UTC时间,这些方法在 下面一起列出。例如,get[UTC]Day()同时代表getDay()getUTCDay()

    Date对象一共有46个实例方法,可以分为以下3类:to类、get类和set类。因为Date对象的 实例方法个数太多,而大多数实例方法在使用的时候都是非常相似的,所以我们这里只选择个别

    方法进行演示

    1. to

    to类方法从Date对象返回一个字符串,表示指定的时间

    • toString。:返回本地时区的日期字符串
    • toUTCString():返回UTC时间的日期字符串
    • tolSOStringO返回Date对象的标准的日期时间字符串格式的字符串
    • toDateString。:返回Date对象的日期部分的字符串
    • toTimeString:返回D ate对象的时间部分的字符串

    toJSONO返回一个符合JSON格式的日期字符串,与tolSOString方法的返回结果完全相同

    • toLocaleString。: toString方法的本地化转换
    • toLocaleTimeString。: toTimeString方法的本地化转换
    • toLocaleDateString。: toDateString方法的本地化转换

    个别方法演示:

    console.log(new Date("1990-03-23").toString());

    //Fri Mar 23 1990 08:00:00 GMT+0800 (CST)

    console.log(new Date("1990-03-23").toDateString());//Fri Mar 23 1990

    console.log(new Date("1990-03-23").toTimeString());//08:00:00 GMT+0800 (CST) console.log(new Date("1990-03-23").toLocaleString());//1990-3-23 08:00:00

    1. get

    Date对象提供了一系列get类方法,用来获取实例对象某个方面的值

    在介绍get类方法之前,首先要介绍valueOf方法

    valueOf:返回距离1970110点的毫秒数。因此,可以方便地使用比较运算符来比较日期

    let date1 = new Date(1990,3,23);

    let date2 = new Date(1988,8,21);

    console.log(date1 > date2);//true

    • getTime:返回距离1970110点的毫秒数,同valueOf。在ECMAScript5之前,可以 使用getTime方法实现Date.now
    • getTimezoneOffset。:返回当前时间与UTC的时区差异,以分钟表示(8*60=480分钟),返回 结果考虑到了夏令时因素
    • getYearO :返回距离1900年的年数(已过时)
    • get[UTC]FullYear():返回年份(4 位数)
    • get[UTC]Month():返回月份(0-11)
    • get[UTC]Date():返回第几天(1-31)
    • get[UTC]Day():返回星期几(0-6)
    • get[UTC]Hours()返回小时值(0-23)
    • get[UTC]Minutes()返回分钟值(0-59)
    • get[UTC]Seconds()返回秒值(0-59)
    • get[UTC]Milliseconds():返回毫秒值(0-999)

    |注意:通过标准日期时间格式字符串,且有前置0的形式的参数设置,设置的是UTC时间

    个别方法演示:

    console.log(new Date("1990-03-23").valueOf());//638150400000

    console.log(new Date("1990-03-23").getTime());//638150400000

    console.log(new Date("1990-03-23").getDay());//5 console.log(new Date("1990-03-23").getMonth());//2

    1. set

    Date对象提供了一系列set类方法,用来设置实例对象的各个方面

    set方法基本与get方法相对应,set方法传入类似于Date.UTC()的参数,返回调整后的日期的内部 毫秒数

    |注意:星期只能获取,不能设置

    • setTime:使用毫秒的格式,设置一个D ate对象的值
    • setYearO :设置年份(已过时)

    -set[UTC]FullYear():设置年份(4位数),以及可选的月份值和日期值

    • set[UTC]Month()设置月份(0-11),以及可选的日期值
    • set[UTC]Date():设置第几天(1-31)
    • set[UTC]Hours()设置小时值(0-23),以及可选的分钟值、秒值及毫秒值
    • set[UTC]Minutes()设置分钟值(0-59),以及可选的秒值及毫秒值

    -set[UTC]Seconds()设置秒值(0-59),以及可选的毫秒值

    • set[UTC]Milliseconds():设置毫秒值(0-999)

    个别方法演示:

    let date = new Date("1990-03-23"); console.log(date.setFullYear(1992),date.getFullYear()); //701308800000 1992

  • 相关阅读:
    08day 操作命令以及目录结构
    换工作
    json转为字典
    快速排序
    冒泡排序
    python函数-生成器
    关键字global
    函数的定义和参数调用
    count()函数与center()函数
    python字符串常用函数:strip()
  • 原文地址:https://www.cnblogs.com/dazhongma/p/11400566.html
Copyright © 2011-2022 走看看