JS内置对象小练习

这篇博客记录了作者在学习JavaScript过程中的一些基础练习,包括使用indexOf()和lastIndexOf()查找字符出现次数,从文件路径中提取文件名和后缀,反转字符串并处理首尾字母,以及利用Math逻辑找出能被3和5整除的偶数。

这仅仅是个人在对学习js道路上的扎实基础过程的记录!!!

1、判断一个字符(比如“a”)是否出现在另一个字符(比如“234a0sadfj2affa2”)中,如果出现,求出出现了几次。

分析:

第一种方法

思路:首先我们的目的是为了查出字符串中是否有这个字符串,有的话将其记录一次,查找字符串的话可以用indexof(),但是查找的话就要遍历一下字符串,所以这时要做一个for循环完成对字符串的每个元素的遍历,如果查找到这时便需要定义一个变量让其自加做一次记录,在第二次查找到相同元素再做一次累加......以此类推,完成对整个字符串的查询,然后这时将累加的和输出便是字符串在另一个字符串出现的总和;

这里遍历的是字符串的元素而不是下标

代码:

  var str = '234a0sadfj2affa2';
          var a = 'a';
         // 定义一个变量j用来记录a出现的次数
          var j = 0;
          for (var i=0; i<str.length; i++) {
             if(a.indexOf(str[i]) != -1 ){
                 j++;
             }
          }
          console.log('a出现了'+j+'次');

结果:

 第二种方法

思路:思路和第一种方法差不多,只不过在for循环中,我们是判断变量a与str字符串的字符是否相等,相等的话记录一次,遍历完str字符串之后累加的值便是a出现的次数

代码:

 var str = '234a0sadfj2affa2';
          var a = 'a';
          var j = 0;
          for (var i=0; i<str.length; i++) {
              // 判断的条件中是将a的值与str字符串的每个字符进行比较,相同则j自加一次
             if(a == str[i] ){
                 j++;
             
          }
          console.log('a出现了'+j+'次');

 结果:

 2、获取一个长文件路径中的文件名及其后缀,(注意 在js中,字符串中的特殊字符需要使用转义字符进行转义,比如“\”要写成"\\" 因为“\\”前面的反斜杠是转义所以“\\”只当做一个字符)

分析:需要写入一串是文件名的字符串如:var str = 'c:\\上课用\\专用文件夹\\B0348\\JavaScript\\day03\\03基础小案例.html';我们想要取的是文件名(03基础小案例)和后缀(html),这时我们就有两种思路了,一种是我们想要获得文件名就可以对字符串进行从后往前的查找(lastIndexOf(字符)),查找到‘0’这个字符和‘h’,然后用str.substr()将其截取出来,这第二种也是用从前往后的查找方法,找到第一个反斜杠“\\”的索引值 和第一个‘.’的索引值,然后用 substring()的方式分别截取出来即可。

知识点:这里用到内置对象String的属性

substring(start,end)   //从指定位置开始,截取字符串到结束位置, end值取不到;

substr(start,length)从指定位置开始,截取length长度个字符;

lastIndexOf(字符)  //从后往前找,只找第一个匹配的字符【尾次】;

代码:

1、

 var str = 'c:\\上课用\\专用文件夹\\B0348\\JavaScript\\day03\\03基础小案例.html';
        // substr(start,length)从指定位置开始,截取length长度个字符
        // lastIndexOf(字符) 从后往前找,只找第一个匹配的字符【尾次】
        console.log(str.substr(str.lastIndexOf(0), 7)); 
        console.log(str.substr(str.lastIndexOf('h'), 4));
//(注:我这里是直接将其合并来写了,然后打印出来,本人比较懒,当然你也可以将其分开,用变量接过每次操作的值再打印

2、

var str = 'c:\\上课用\\专用文件夹\\B0348\\JavaScript\\day03\\03基础小案例.html';
        var gang = str.lastIndexOf('\\')
        var dian = str.lastIndexOf('.')
       //这里的+1操作是在查找的索引值基础上再加一位,因为我们取的不包括斜杠
        var ming = str.substring(gang + 1, dian)
        console.log(ming);
        var hz = str.substring(dian + 1)
        console.log(hz);

结果:

 3、用户自输入一个字符串,然后将该字符串反转顺序,并且首尾字母转为大写,其他字母转为小写后弹出框输出。

分析:首先我们要明确这个题目的意思 抓住重点,是需要将字符串反转首尾字母转为大写,然后其它的都为小写,明确了以后我们就要考虑所学的内置对象string的属性中哪个能将字母大写和小写,当然了字符串没有反转这一属性,但是数组有这一属性啊,这时我们可以考虑将字符串转化为数组然后再将数组反转(因为数组Array有反转这一属性值),这时字符串不就反转过来啦,然后再将数组转为字符串,这就实现了字符串的反转啦。然后再对首尾字母大写,其他转为小写不就可以实现了吗。

要点:要学会运用string和Array之间的转换,并且要吃透两者的属性,学会运用两者属性

这里我就说用到的两者属性就可以啦,其他属性可以去查阅文档 MDN

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript

Array的属性

Join()   //将数组中的每一个元素通过一个字符链接到一块

reverse()  // 翻转数组

string属性

split()   //    以一个分割符,将一个字符串串分割成一个数组

charAt(index)          //获取指定位置处的字符(该题用于取字符串首尾字符

 大小写转换法
    toLocaleUpperCase()  //转化为大写
    toLocaleLowerCase()  //转化为小写

方案一:方法有点复杂且有点局限性(因为不知道用户输入的字符串是否有大写)

var s1 = prompt('一个字符串')
      //将字符串转为数组
        var s1 = s1.split('');
      //反转数组
        var s2 = s1.reverse();
      //转为字符串
        var z = s2.join('')
      //取到首字符
        var a = z.charAt(0)
      //取到最后一个字符
        var b = z.charAt(z.length - 1)
      //截取中间部分字符
        var c = z.slice(1, z.length - 1)
      //将它们拼接起来就可以实现了
        alert(a.toUpperCase() + z.slice(1, z.length - 1) + b.toUpperCase());

方案二:

 var s1 = prompt('一个字符串')
        var s1 = s1.split('');
        var s2 = s1.reverse();
        //对数组s2进行遍历
        for (var i = 1; i < s2.length; i++) {
            //这里判断索引值是否是首位和末尾位,是的话就改为大写,不是就小写
            if ( i == 0 || i == s2.length - 1) {
                s2[i] = s2[i].toUpperCase();
            }else {
                s2[i] = s2[i].toLocaleLowerCase();
            }
        }
        //将数组转化为字符串
        var str = s2.join('')
        alert(str);

结果:

 4、(Math. 逻辑)编写一个函数,带一个参数n,在页面上输出1~n(n>1)之间所有能同时被3和5整除的偶数,并要求每行只输出6个(即超过6个后要换行再输出)

分析:

这里只需要写一个算法控制1~n(n>1)之间所有能同时被3和5整除的偶数,要求每行只输出6个结果的意思就是当在1~n这个数之间找到了很多个这样的数,但是要控制一行只输出6个,超过六个就换下一行(这里可以在算法中加一个自增变量,每次计算出一个值就自加一次,然后加到6的时候做一次判断以此类推的的话就是只要判断自增变量只要是6的倍数就进行一次换行操作),这时就解决了

程序:

function sum(n) {
                  //定义一个变量x
                   var x = 0;
                   //在1~n中循环算法
                  for (var k=1; k<=n; k++) {
                      //计算1~n(n>1)之间所有能同时被3和5整除的偶数
                      if (k % 3 == 0 && k % 5 == 0 && k % 2 == 0) {
                            document.write(k+'&nbsp');
                           //得到一次结果自加一次
                            x++;
                            //判断是否换行
                            if (x % 6 == 0) {
                            document.write('<br>')
                      }
                      }
                  }
              }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值