小白学js第九天之基本类型包装

目录

  • 基本类型和基本包装类型的不同
  • 创建基本包装类型对象
  • String对象
    • 创建字符串对象
    • 常用方法
    • 案例

此篇脑图请戳[http://naotu.baidu.com/file/5bffe99e804bb037d5b9e55a68a68169?token=42130843de5e46b6]

基本类型和基本包装类型的不同

  • 基本类型是没有方法的
  • 基本包装类型有方法
// s1是基本类型,基本类型是没有方法的
var s1 = 'zhangsan';
var s2 = s1.substring(5);

// 当调用s1.substring(5)的时候,先把s1包装成String类型的临时对象,再调用substring方法,最后销毁临时对象, 相当于:
var s1 = new String('zhangsan');
var s2 = s1.substring(5);
s1 = null;

创建基本包装类型对象

   var num = 18; //数值,基本类型
        var num = Number('18'); //类型转换
        var num = new Number(18); //基本包装类型,对象
        // Number和Boolean基本包装类型基本不用,使用的话可能会引起歧义。例如:
        var b1 = new Boolean(false);
        var b2 = b1 && true; // 转换成false的五种情况 NaN undefined null '' ,这时b1已经是一个Boolean的对象了.
        console.log(b2); //true

String对象

字符串的不可变

var str = 'abc';
str = 'hello';
console.log(str); // abc
// 当重新给str赋值的时候,常量'abc'不会被修改,依然在内存中
// 重新给字符串赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变
// 由于字符串的不可变,在大量拼接字符串的时候会有效率问题

创建字符串对象

var str = new String('Hello World');

// 获取字符串中字符的个数
console.log(str.length);

字符串对象的常用方法

字符串所有的方法,都不会修改字符串本身(字符串是不可变的),操作完成会返回一个新的字符串,所以要声明一个变量来接收返回值

// 1 字符方法
charAt()        //获取指定位置处字符
charCodeAt()    //获取指定位置处字符的ASCII码
str[0]          //HTML5,IE8+支持 和charAt()等效
// 2 字符串操作方法
concat()        //拼接字符串,等效于+,+更常用
slice()         //从start位置开始,截取到end位置,end取不到
substring()     //从start位置开始,截取到end位置,end取不到
substr()        //从start位置开始,截取length个字符
// 3 位置方法
indexOf()       //返回指定内容在元字符串中的位置
lastIndexOf()   //从后往前找,只找第一个匹配的
// 4 去除空白   
trim()          //只能去除字符串前后的空白
// 5 大小写转换方法
to(Locale)UpperCase()   //转换大写
to(Locale)LowerCase()   //转换小写
// 6 其它
search()
replace()
split()
fromCharCode()
// String.fromCharCode(101, 102, 103);   //把ASCII码转换成字符串

案例

  • 截取字符串"我爱中华人民共和国",中的"中华"

  var str = new String("我爱中华人民共和国");
        var newStr = str.substr(2, 2); //第一个参数是开始截取的字符索引,第二个参数截取字符的长度
        console.log(newStr); // 中华
  • "abcoefoxyozzopp"查找字符串中所有o出现的位置

        var str = 'abcoefoxyozzopp';
        var index = -1;
        do {
            index = str.indexOf('o', index + 1); //第一个参数是查找的对象,第二个参数时从第几个开始找
            if (index !== -1) {
                console.log(index);
            }

        } while (index !== -1)
  • 把字符串中所有的o替换成!

        var str = 'abcoefoxyozzopp';
        //  abc!efoxyozzopp
        //  只会替换第一个找到的字符串
        // str = str.replace('o', '!');
        // console.log(str);
        var index = -1;

        do {
            index = str.indexOf('o', index + 1);
            if (index !== -1) {
                str = str.replace('o', '!');
            }
        } while (index !== -1);
  • 把字符串中的所有空白去掉' abc xyz a 123 '
 // 传统方法1 去空格
 var str = '   abc       xyz  a    123   ';
var index = -1;
        do {
            index = str.indexOf(' '); // 关键点在这里,第二个参数是每次从第几个数字开始往后找空格,这样前面的空格跳过了
            console.log(index);
            if (index !== -1) {
                str = str.replace(' ', '');
            }
            console.log(str);
        } while (index !== -1);
        console.log(str);
        
        //方法 2
         var str = '   abc       xyz  a    123   ';
        str = str.replace(/\s*/g, '');
         console.log(str);

        //方法3
        var str = '   abc       xyz  a    123   ';
        var a = str.split(' ');
        console.log(a.join(''));
        
        //方法4
        
        var str = '   abc       xyz  a    123   ';

        var res = '';
        var arr = str.split('');
        for (var i = 0; i < arr.length; i++) {
            if (arr[i] !== ' ') {
                res += arr[i];
            }
        }
        console.log(res);
  • 判断一个字符串中出现次数最多的字符,统计这个次数
  // - 判断一个字符串中出现次数最多的字符,统计这个次数

        var str = 'abcoefoxyozzopp';
        var ch; //出现的字符
        var num; //出现的次数
        var o = {};
        //在对象中,常用的赋值操作为obj.a = 1 或 obj.a = 1;
        // 读取值通常就用obj[a] 
        for (var i = 0; i < str.length; i++) {
            var item = str.charAt(i);
            //给o一个item属性,如果o里面有这个属性,返回true,执行o[item]++;, 如果没有这个属性,返回false,执行o[item] = 1(就是给o的item属性赋值)
            if (o[item]) {
                //已经有该属性
                o[item]++;
            } else {
                //没有该属性
                o[item] = 1;
            }
        }
        // console.log(o);
        num = 1;
        for (var key in o) {
            if (num < o[key]) {
                // 出现最多的次数
                num = o[key];
                // 出现最多的字符
                ch = key;
            }
        }
        console.log(ch + '是出现次数最多的字符,' + '出现了' + num + '次');

bye for now!

猜你喜欢

转载自www.cnblogs.com/1020-jj/p/10890023.html