第八章 字符串调用方法和Math

177 阅读4分钟

一、字符串方法

  1. chartAt()
  • 作用:通过下标找到对应字符
  • 参数:下标(索引)
  • 返回值:下标对应的字符
var str = 'sdasdjasjda';
var res = str.chatAt('2');
console.log(res)//a
  1. charCodeAt()
  • 作用:通过下标找到对应字符ASCII码
  • 参数:下标(索引)
  • 返回值:下标对应字符的ASCII码
var str = 'sdasdjasjda';
var res = str.charCodeAt('2');
console.log(res)//97
  1. indexOf/lastIndexOf()
  • 作用:查找第一个出现的某个特定值
  • 参数:(n,m)
    • n:要查找的值
    • m:限定范围(indexOf中m是表示从这个下标开始/lastIndexOf中m是表示从这个下标位置结束)
  • 返回值:第一次出现特定值的下标
var str = 'asdasdadsadsadasd';
var res = str.indexOf('a',5);
console.log(res);
  1. slice()
  • 作用:截取字符串,包含n不包含m
  • 参数:(n,m)
    • n:起始索引(包含)
    • m:结束索引(不包含)
  • 返回值:查找的字符
    • 从索引n开始查到索引m结束的字符
    • 如果索引m不写,就是查找到最后
    • 如果n只写一个0,或者不写就是复制一份
    • 也可以为负数,转换成正数的规律:负数值加上str.length
var str="zhufengpeixun"

str.slice(1,3)    ===>"hu"

str.slice(0)      ===>复制一份
str.slice()       ===>复制一份 


var res=str.slice(-3,-1);   ===>“xu” 

4.1 subString(n,m)

  • subString和slice基本都一样,唯一不同在于,subString不支持负数索引,而slice支持负数索引

4.2 substr(n,m)

  • 作用:从索引n开始截取到m个字符
  • 参数:n,m(个数)
  • 返回值:截取的字符串
  • 也支持从负索引开始
var str="zhufengu";

var res=str.substr(-3,2);  ====>"ng"
  1. toUpperCase()
  • 作用:把字符串转换为大写
  • 参数:无
  • 返回值:转换后的字符串
  1. toLowerCase(0)
  • 作用:把字符串转换为小写
  • 参数:无
  • 返回值:转换后的字符串
  1. replace()
  • 作用:把字符串中某部分的字符替换成另一部分字符
  • 参数:(str1,str2)第一个参数代表的是要替换的字符或者是正则;第二个参数代表的是替换后的字符
  • 返回值:替换后的字符串
var str="zhufeng2018zhufeng2019zhufeng";

var res=str.replace("zhufeng","珠峰");   
//===>"珠峰2018zhufeng2019zhufeng"

var res=str.replace(/zhufeng/g,"珠峰");

console.log(res)===>"珠峰2018珠峰2019珠峰"
  1. split()
  • 作用:按照指定的字符把字符串分割成数组
  • 参数:分隔符
  • 返回值:分割后的数组
  • 通过数组方法的join对比记忆
 var str="1-2-3";

 var res=str.split("-");
 
 console.log(res); ===>  ["1", "2", "3"]

二、练习题

1.【时间字符串处理】把下面的字符串变成"2019年08月18日 12时32分18秒"

 <script>
        var str = "2019-8-18 12:32:18";
        function timeText(){
        res = str.split(' ');
        var strLeft = res[0]
        strLeft = strLeft.split('-');
        year = strLeft[0];
        month = strLeft[1]
        day = strLeft[2]
      
        var strRight = res[1];
        strRight = strRight.split(':');
        var hour = strRight[0]
        var minute = strRight[1]
        var second = strRight[2]
        // console.log(strLeft, strRight);
        var fina = `${year}${addZero(month)}${addZero(day)}${addZero(hour)}${addZero(minute)}${addZero(second)}秒`;
        function addZero(num) {
            if (num < 10) {
                return '0' + num
            }
            return num;
        }
        return fina;
        }
        console.log(timeText(str)); 
    </script>

3. queryURLParams问号参数处理

 var str = "https://www.baidu.com?name=zhufeng&age=10&id=14";

        function urlParams() {
            var obj = {};
            var right = str.split('?')[1];
            console.log(right);
            ary = right.split('&');
            //console.log(ary);
            if (right) {
                for (var i = 0; i < ary.length; i++) {
                    var item = ary[i].split('=');
                    obj[item[0]] = item[1];
                }
            }
            return obj;
        }
        console.log(urlParams(str));
    </script>

三、Math常用的方法

  • Math称之为数学函数,它也是对象数据类型,主要是用来操作数字的
  1. Math.abs()
  • 作用:求绝对值
  • 参数:数字
  • 返回值:数字的绝对值
console.log(Math.abs(-1))
  1. Math.ceil()
  • 作用:向上取整(无论正负,取最大的值)
  • 参数:数字
  • 返回值:数字取整值
console.log(Math.ceil(-1.2))
  1. Math.floor()
  • 作用:向下取整(无论正负,取最小的值)
  • 参数:数字
  • 返回值:取整值
console.log(Math.floor(-1.2))
  1. Math.round()
  • 作用:四舍五入(只看数值不看正负)
  • 参数:数字
  • 返回值:四舍五入后的数字
  • 注意:正数四舍五入,如果是负数,临界点必须是大于5的,
Math.round(1.5)
2
Math.round(-1.5)
-1
Math.round(-1.51)
-2
  1. Math.sqrt()
  • 作用:开方
  • 参数:数字
  • 返回值:结果
console.log(Math.sqrt(9))
  1. Math.pow()(es6:n**m)
  • 作用:取幂
  • 参数:(n,m)
    • n:底数
    • m:幂指数
  • 返回值:结果
console.log(Math.pow(3,2));
//console.log(3**2);
  1. Math.PI
  • 作用:取圆周率
  • 参数:无括号
  • 返回值:圆周率
console.log(Math.PI)
  1. Math.max/Math.min()
  • 作用:取最大最小值
  • 参数:数字
  • 返回值:最大/最小值
 console.log(Math.max(1,3,2,2));
 console.log(Math.min(1,3,2,43));
  1. Math.random()
  • 作用:获取0-1之间的随机数(大于等于0,小于1)
  • 参数:无
  • 返回值:任意值
  • 想要获取n到m之间的随机数:Math.random()*(m-n)+n;
console.log(Math.random());
// 获取10 到20 之间的随机数
Math.random()*10+10;

练习

//场景1:把盒子刷新一次换一次颜色(随机换颜色)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
    div{
        width: 100px;
        height: 100px;
    }
    </style>
</head>
<body>
    <div>hju</div>
    <script>
    var box = document.querySelector('div')
    console.log(box);
    
    console.log(Math.floor(Math.random()*256));
     
    box.style.background = `rgb(${Math.floor(Math.random()*256)},${Math.floor(Math.random()*256)},${Math.floor(Math.random()*256)})`;
    </script>
</body>
</html>

//水仙花数

//场景2:找寻三位数中 百位三次方+十位三次方+个位三次方=这个三位数

//输入数字,若不符合要求则输出  "您输入的数字不规范"
//若输入的数字符合要求但是不是水仙花数则输出  "您输入的数字不是水仙花数"


function flower(num) {
            if (num >= 100 && num < 1000) {
                var numB = num.toString();
                var hund = Number(numB[0])
                var ten = Number(numB[1])
                var bitt = Number(numB[2])
                if (num ==  Math.pow(bitt, 3) + Math.pow(ten, 3) + Math.pow(hund, 3)) {
                    console.log(num);

                } else {
                    return "您输入的数字不是水仙花数";
                }
            } else {
                return "您输入的数字不规范";
            }
        }
        console.log(flower());