JavaScript学习第六天

1、字符串的基本操作

字符串

  • 创建字符串
  • 我们创建字符串也分为两种方法字面量和构造函数
  • 字面量:var str = 'hello'
  • 构造函数创建:var str = new String('hello')
    <script>
        var str='hello'
        console.log(str)
        // length只读不能写  就是不能用length修改它的长度
        // str.length=0  此代码无效
        console.log(str.length)
        // 索引(下标) 也是只读
        // str[1]="a"  此代码无效
        console.log(str[1])
        console.log(str+" world")
        // 遍历
        for(var i=0;i<str.length;i++){
            console.log(i,str[i])
        }


        var str2=new String('hello')
        console.log(str2)
        console.log(str2+" world")
    </script>

字符集

ASCII字符集

  • 我们都知道,计算机只能存储011010这样的二进制数字
  • 那么我们的a~z/ A~Z/ $ / @/...之类的内容也有由二进制数字组成
  • 我们可以简单的理解为,a~z/ A~Z/ $ / @/...之类的内容都有一个自己的编号,然后在计算机存储的时候,就存储的是这些编号,我们看的时候,也是透过这些编号在解析成我们要看到的内容给我们看到
  • ASCII码对照表:ASCII码对照表-完整ASCII码表-我就查查询

unicode编码

  • 我们看到了,ASCII只有128个字符的编码结构
  • 但是因为ASCII出现的比较早,而且是美国发明的,早先时候这些内容就够用了
  • 因为存储一些英文的内容,传递一些英文的文章什么的都够用了
  • 那么对于这个世界来说肯定是不够的
  • 因为我们的汉字没有办法存储,包括一些其他国家的语言也没有办法存储
  • 所以就出现了Unicode编码,也叫(万国码,统一码)
  • Unicode对照表就是一个和ASCII一样的对照表,只不过变得很大很大,因为存储的内容特别的多
  • 而且包含了世界上大部分国家的文字,所以我们的文字和字符现在在存储的时候,都是按照Unicode编码转换成数字进行存储
  • 我们的UTF-8就是一种8位的Unicode字符集

2、案例-统计字符出现次数

    <script>
        var str="abcabcab"
        var obj={}
        for(var i=0;i<str.length;i++){
            console.log(str[i])
            var key=str[i]

            if(obj[key]===undefined){
                obj[key]=1
            }
            else{
                obj[key]++
            }
            // 等同于上面的if-else
            // if(obj[key]){
            //     obj[key]++
            // }else{
            //     obj[key]=1
            // }
        }
        console.log(obj)
    </script>

3、字符串常用方法

1、chartAt()

  • 传入的参数是索引,返回的值是索引对应的字符
    <script>
        var str="jack"
        var str1=str.charAt(0)
        console.log(str,str1)
    </script>

2、chartCodeAt()

  • 传入的参数是索引,返回值是索引对应的字符编码
    <script>
        var str="jack"
        var str1=str.charCodeAt(0)
        console.log(str1)

        var arr=[]
        for(var i=65;i<91;i++){
            // fromCharCode将数字编码转换成对应的字符
            arr.push(String.fromCharCode(i))
        }
        console.log(arr)
    </script>

3、toUpperCase()     把所有字符转成大写   

4、toLowerCase()     把所有字符转成小写

    <script>
        var str="hello WORLD"

        console.log(str.toUpperCase())
        console.log(str.toLowerCase())
    </script>

5、substr(开始索引,长度)

6、substring(开始索引,结束索引)        包前不包后     索引不要出现负数

7、slice(开始索引,结束索引)        和substring差不多

    <script>
        var str="hello"

        var str1=str.substr(1,2)
        console.log(str1)

        var str2=str.substring(1,2)
        console.log(str2)
        // 从字符串的下标为3开始打印,一直到字符串后面
        var str3=str.substring(3)
        console.log(str3)

        var str4=str.slice(1,2)
        console.log(str4)
        var str5=str.slice(3)
        console.log(str5)
        var str6=str.slice(3,-1)
        console.log(str6)
    </script>

8、replace        替换        只能替换遇见的第一个

    <script>
        var str="abbbb"
        var str1=str.replace("a","b")
        console.log(str1)
    </script>

9、split        分割

    <script>
        var str="a|b|c"
        console.log(str.split("|"))
    </script>

10、indexOf           从前面开始往后查      

      lastIndexOf        从后面开始往回查

    <script>
        var str="hello"
        // 从下标为2开始往后查
        console.log(str.indexOf("e",2))
        // 从下标3开始往前查
        console.log(str.lastIndexOf("l",3))
    </script>

11、concat        拼接

    <script>
        var str="abc"
        console.log(str.concat("def"))
    </script>

12、trim  去掉首尾空格

trimStart()  trimLeft()       去掉首部空格         

trimEnd()  trimRight()        去掉尾部空格

    <script>
        var str="   hello world   "
        console.log("|"+str+"|")
        console.log("|"+str.trim()+"|")
        console.log("|"+str.trimStart()+"|")
        console.log("|"+str.trimEnd()+"|")
    </script>

4、案例-模糊查询

    <script>
        var str=["bkpp","abc","ddd","eee","sde","vfd","gff","bd","bf"]

        var input=prompt("请输入要查询的内容")
        var res=str.filter(function(item){
            return item.indexOf(input) > -1
        })
        console.log(res)
    </script>

5、json格式字符串

    <script>
        // json格式的字符串====>对象
        // key必须加双引号
        // json格式的数据必须严格按照以下格式
        var str='{"name":"jack","age":13}'

        console.log(str)
        console.log(str.name)

        // 把json格式的字符串进行解析成对象
        var obj=JSON.parse(str)
        console.log(obj)
        console.log(obj.name)

        // 把对象打包成字符串
        var obj2={name:"tom"}
        var str1=JSON.stringify(obj2)
        console.log(obj2,str1)
    </script>

6、模板字符串

    <script>
        var myhtml='<li>111</li>\
        <li>222</li>\
        <li>333</li>'
        document.write(myhtml)


        var myhtml2=`<li>111</li>
        <li>222</li>
        <li>333</li>`
        document.write(myhtml2)

        var myname="jack"
        // ${js的地盘}
        var str=`my name is ${myname} ${20+10}`
        document.write(str)

        var arr=["xiaoming","jack","tom"]
        var arr2=arr.map(function(item){
            return `<li>${item}</li>`
        })
        document.write(arr2.join(""))
    </script>

7、数字常用方法

1、toFixed(要保留的小数位数)       

做到四舍五入     

位数不够自动补0

返回类型是字符串

    <script>
        var price=12.458654
        var price1=12.3
        console.log(price.toFixed(2))
        // 位数不够,自动补0
        console.log(price1.toFixed(2))
        // 记得-0转换成数字才能进行运算,否则变成字符串拼接
        console.log(price1.toFixed(2)-0+100)
    </script>

2、Math对象

  • random    返回0-1(包含0但不包括1)之间的随机数
    <script>
        //random
        console.log(Math.random())
    </script>
  • round  四舍五入取整
    <script>
        console.log(Math.round(4.56))
    </script>

  •  ceil向上取整        floor向下取整
    <script>
        console.log(Math.ceil(4.56))
        console.log(Math.floor(4.56))
    </script>

  • abs绝对值
    <script>
        console.log(Math.abs(-12.3))
    </script>

  •  sqrt  平方根
    <script>
        console.log(Math.sqrt(9))
    </script>

  •  pow(底数,指数)
    <script>
        console.log(Math.pow(2,3))
    </script>

  •  max(多个参数)
    <script>
        console.log(Math.max(10,20,30))
    </script>

  • min(多个参数)
    <script>
        console.log(Math.min(10,20,30))
    </script>

  •  PI
    <script>
        console.log(Math.PI)
    </script>

8、案例-随机整数

    <script>
        //0-10  不包含10
        // 不推荐用round,造成概率不一样,用floor会好一些
        var res=Math.floor(Math.random()*10)
        console.log(res)

        // 0-10  包含10
        var res1=Math.floor(Math.random()*(10+1))
        console.log(res1)

        // 10-20 不包含20
        var res2=Math.floor(Math.random()*10)+10
        console.log(res2)

        // 10-20  包含20
        var res3=Math.floor(Math.random()*10)+11
        console.log(res3)

        // 函数     不包含
        function getRan(min,max){
            if(min>max){
                console.error("参数有误")
                return
            }
            return Math.floor(Math.random()*(max-min))+min
        }
        console.log(getRan(20,30))


        // 函数     包含
        function getRan1(min,max){
            if(min>max){
                console.error("参数有误")
                return
            }
            return Math.floor(Math.random()*(max-min+1))+min
        }
        console.log(getRan1(20,30))

    </script>

9、时间对象

Date

  • js提供的内置构造函数,专门用来获取时间的

new Date()

  • new Date()在不传递参数的情况下是默认返回当前时间
    <script>
        var time=new Date()
        console.log(time)
    </script>

  • new Date()在传入参数的时候,可以获取到一个你传递进去的时间
<script>
    var time=new Date(`2022-11-03 13:14:00`)
    console.log(time)
</script>

  • new Date()传递的参数有多种情况

        1、传递一个参数,是毫秒数

<script>
    var time=new Date(1000)
    console.log(time)
</script>

        2、传递两个数字,第一个表示年,第二个表示月份

<script>
    // 0是一月
    var time=new Date(2022,0)
    console.log(time)
</script>

        3、传递三个数字,前两个不变,第三个表示该月份的第几天,从1到31

<script>
    // 0是一月
    var time=new Date(2022,0,3)
    console.log(time)
</script>

        4、多个参数

<script>
    // 0是一月
    var time=new Date(2022,0,3,12,30,10)
    console.log(time)
</script>

        5、传字符串

<script>
    // 0是一月
    var time=new Date("2022-11-11 12:10:6")
    console.log(time)
</script>

10、时间对象常用方法

1、getFullYear        获取当前年份

<script>
    var date=new Date()
    console.log(date.getFullYear())
</script>

 2、getMonth()        获取当前月份

<script>
    var date=new Date()
    console.log(date.getMonth())
</script>

3、getDate()         获取当前所在月份的天数

<script>
    var date=new Date()
    console.log(date.getDate())
</script>

 4、getDay()   获取周日0,周一-周六:1-6

<script>
    var date=new Date()

    console.log(date.getDay())
</script>

 5、getHours()    获取当前的小时

        getMinutes()        分钟

        getSeconds()             秒

        getMilliseconds()        毫秒

<script>
    var date=new Date()

    console.log(date.getHours())
    console.log(date.getMinutes())
    console.log(date.getSeconds())
    console.log(date.getMilliseconds())
</script>

6、getTime()    时间戳(距离1970年1月1号0点0分0秒的毫秒数)

<script>
    var date=new Date()
    console.log(date.getTime())
    console.log(new Date(1668483171417))
</script>

7、 setFullYear()

setMonth()

setDate()

没有setDay()

setHours()

setMinutes()

setSeconds()

setTime()

<script>
    var date=new Date()
    console.log(date)

    date.setFullYear(2025)
    console.log(date)

    date.setMonth(5)
    console.log(date)

    date.setDate(26)
    console.log(date)

    date.setHours(13)
    console.log(date)

    date.setMinutes(14)
    console.log(date)

    date.setSeconds(6)
    console.log(date)

    date.setTime(1668483171417)
    console.log(date)
</script>

11、定时器

定时器

在js里面,有两种定时器,倒计时定时器间隔定时器

倒计时定时器

  • 倒计时多少时间以后执行函数
  • 语法:setTimeout(要执行的函数,多长时间以后执行)
  • 会在你设定的时间以后,执行函数
  • 清除该定时器使用clearTimeout()
<script>
    var timeId=setTimeout(function(){
        console.log('我要执行了')

    },1000)
    console.log(timeId)   //1
    clearTimeout(timeId)    //清除
</script>

        时间是按照毫秒进行计算的,1000毫秒就是1秒钟

        所以会在页面打开1秒钟以后执行函数

        只执行一次,就不再执行了

        返回值是,当前这个定时器是页面中的第几个定时器

间隔定时器

  • 语法:setInterval()  
  • 立即执行
  • 清除该定时器用clearInterval()
<button id="btn1">清除定时器-间隔定时器</button>
<script>
    var time=setInterval(function(){
        console.log("我要执行了")
    },1000)
    console.log(time)

    console.log(btn1)
    //直接通过id,拿到按钮对象
    btn1.onclick=function(){
        console.log("btn click")
        clearInterval(time)
    }
</script>

       

        时间是按照毫秒进行计算的,1000毫秒就是1秒钟

        按时间间隔执行多次

        返回值是,当前这个定时器是页面中的第几个定时器

同步、异步

同步执行完才到异步执行

如果同步的一直没执行完,那么就轮不到异步来执行

12、案例-倒计时

<div id="box"></div>
<script>

    // 当前时间距离的时间
    var targetDate=new Date("2023/1/1")

    function diffTime(currnt,target){
        // 两个时间相差的时间,单位秒   ceil向上取整
        var sub=Math.ceil((target-currnt)/1000)
        console.log(sub)
        // 天
        var day=parseInt(sub/(60*60*24))
        // 小时
        var hours=parseInt(sub%(60*60*24) /(60*60))
        // 分钟
        var minutes=parseInt(sub%(60*60)/60)
        // 秒
        var seconds=sub%60


        var obj = {
            day:day,
            hours:hours,
            minutes:minutes,
            seconds:seconds
        }
        return obj
    }
   
    
    setInterval(function(){
        // 当前时间
        var currntDate=new Date()
        var res=diffTime(currntDate,targetDate)
        // document.write(`距离2023年还有:${res.day}天${res.hours}时${res.minutes}分${res.seconds}秒`)
        // document.write("<br>")

        // console.log(box)
        box.innerHTML=`距离2023年还有:${res.day}天${res.hours}时${res.minutes}分${res.seconds}秒`
    },1000)
</script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值