JavaScript内置对象Ⅲ

一、字符串对象

JS中字符串虽然看似是一个简单数据类型,实际上在编辑器内部是把它包装成了复杂数据类型。

如:

//在JS中定义一个字符串为CHIX
var str = 'CHIX';

//在编辑器内部实际执行方法为:

① var temp = new String('CHIX');

② str = temp;

③ temp = null;

因此字符串实际是一个对象,含有对象特有的属性和方法。

二、字符串具有不可变性

执行代码

var  str = 'x';

str = 'm';

似乎是改变了字符串的值,但是实际上是在存储器的内部开辟了一块新的存储区域,改变了str指向的存储区域,类似这样:

 虚线为原先str所指向的存储空间,实线为str目前所指向的存储空间。

因此尽量避免大量拼接字符串,开辟的字符串空间过多,导致程序运行迟缓甚至卡死。

三、字符串对象方法

1.

indexOf ('要查找的字符',起始位置)返回指定内容在原字符串中的位置,如果找不到就返回-1。
lastIndexOf()从后往前查找,找到第一个匹配的字符串的索引号。

e.g.

var str = 'I can not rest from travel';

console.log(str.indexOf('o'));//查找从头开始第一个'o',返回值为7

console.log(str.indexOf('o',8));//查找从第8个位置开始的'o',返回值为17

console.log(str.lastIndexOf('o'));//倒着查找到第一个'o',返回值为17

应用案例:

查找字符串“

"中所有'o'出现的位置以及次数。

算法:

①先查找第一个'o'出现的位置

②只要indexOf返回的结果不是-1,就继续往后查找

③因为indexOf不加起始位置只能查找到第一个'o'所在的位置,所以后面的查找要利用第一次查找的索引号加1

e.g.

var str = 'I went out to the hazel wood,because a fire was in my head';
//查找第一个'o'的位置
var index = str.indexOf('o');
//设置一个num变量记录'o'出现的次数
var num = 0;
while(index != -1) {
//输出'o'的位置
 console.log(index);
//记录'o'出现的次数
 num++;
//查找下一个'o'的位置
 index = str.indexOf('o',index+1);
}

2.根据位置返回字符串

charAt(index)返回指定位置的字符(index为字符串的索引号)
charCodeAt(index)获取指定位置处字符的ASCⅡ码,可以用于记录用户输入的字符。
str[index]HTML5,IE8+支持,和charAt()等效。

应用案例:

判断一个字符串“and cut and peeled a hazel wand,and hooked a berry to a thread”中出现次数最多的字符,并统计其次数。

算法:

①利用charAt()遍历整个字符串

②把每个字符都存储给对象,如果对象没有该属性,就记为1,如果存在则属性值+1

③遍历对象属性值,得到最大值和该字符

e.g.

 var str = 'and cut and peeled a hazel wand,and hooked a berry to a thread';
        //定义一个空的对象,用于记录出现的字符及其出现次数
        var count = {};
        for (var i = 0; i < str.length; i++) {
            //获得字符串中的每个字符
            var chars = str.charAt(i);
            if (count[chars]) {//count[chars]得到属性值
                count[chars]++;
            }
            else {
                count[chars] = 1;
            }
        }
        var max = 0;
        var ch = '';
        for (var k in count) {
            //用k得到属性名,count[k]得到属性值
            if (count[k] > max) {
                max = count[k];
                ch = k;
            }
        }
        console.log('出现最多的字符是' + ch);
        console.log('出现次数为:' + max);
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值