js-day09

86 阅读7分钟

字符串方法

toLowerCase():

将字符串中的字母转成全小写

console.log('HELLO'.toLowerCase())
//会根据不同国家的语言进行转换大小写的形式
console.log('HELLO'.toLocaleLowerCase())
toUpperCase():

将字符串中的字母转成全大写

console.log('hello'.toUpperCase())
charAt(index):
  • 返回指定下标位置的一个字符。如果没有找到,则返回空字符串; 参数是下标
  • []中括号这种方式在低版本的浏览器里面是不支持的,charAt()方法兼容性更好
var str = 'abc'
console.log(str[0])
console.log(str.charAt(0))
indexOf:

返回一个字符串在原始字符串中的索引值(查找顺序从左往右查找)。如果没有找到,则返回-1

 var str = 'abc'
 console.log(str.indexOf('a'))

例子:判断用户输入的邮箱地址是否有@符号

var email = prompt('请输入你的邮箱地址?')
if(email.indexOf('@')!=-1){
    alert('ok')
}else{
    alert('输入不符合规范')
}

if(email.indexOf('vip')!=-1){
    alert('你是尊贵的VIP')
}else{
    alert('请充值')
}

lastIndexOf:

在原始字符串中,从右往左查找。如果没有找到,则返回-1

onsole.log('abcad'.lastIndexOf('a'))
substring():

在原字符串,返回一个字符串;不取结束位置,不能给负值会转成0

console.log('王成喜欢吃瓜'.substring(1, 3))
// 注意点:如果给了负值那么会转成0进行计算,那么两个参数的位置会进交换
console.log('王成喜欢吃瓜'.substring(2, -1))
slice():

提取字符串的片断,并在新的字符串中返回被提取的部分;不包括结束位置。给负值时,可以返回倒数第几个

 // console.log('王成喜欢喝酒'.slice(1, -2))
substr()

从起始索引号提取字符串中指定数目的字符。参数1表示起始位置 、值2表示截取的项数

console.log('王成喜欢喝酒'.substr(1, 3))
charCodeAt()

方法可返回指定位置的字符的 Unicode 编码

console.log('王'.charCodeAt())
console.log('a'.charCodeAt())
console.log('1'.charCodeAt())
trim():

移除字符串首尾空白

  • trimLeft()
  • trimRight()
  • trimStart()
  • trimEnd()
var txt = document.getElementById('txt')
var btn = document.getElementById('btn')
btn.onclick = function(){
    if(txt.value.trim() == ''){
        alert('请填写内容')
        return
    }
}

// concat():连接两个或多个字符串,返回连接后的字符串
console.log('王成'.concat('123'))
replace():替换方法
  • 参数1表示的是要替换那个字符
  • 参数2表示替换成那个字符
  • replace()方法支持正则,正则就是验证字符的一种规则
    • g修饰符,表示全局匹配,整个字符串里面去进行替换
console.log('成比较傻, 还比较傻。喜欢说md'.replace(/色|傻/g, '*'))

console.log('成比较傻, 还比较傻。喜欢说md'.replace(/[傻md]/g, '*'))
var txt1 = document.getElementById('txt1')
var txt2 = document.getElementById('txt2')
var btn = document.getElementById('btn')

btn.onclick = function(){
    txt2.value = txt1.value.replace(/傻|md/g, '*')
}
split()

分割,根据你传递的字符的进行把字符串分割成数组

对比:slice()截取   splice() 组合(删除、新增、替换)

注意:如果不传入任何参数那么就把所有的字符当成一个数组元素,如果传入的是一个空字符串,那么就把每一个字符都当成一个数组元素

var url = 'https://www.mi.com?username=zhangsan&password=123'
var str = url.split('?')[1]
console.log(str)

统计字符串个数

  • 需要把字符串字符当成这个对象的键放进对象里面,为了方便统计并把初始值设置为1
  • 可以去遍历字符串
  • 在进行判断这个对象里面是否有这个字符串字符的属性
var str = 'aaabbabddofsakhfsa'
var obj = {}
for(var i=0; i<str.length; i++){
// obj[str[i]]  str[0] 'a'  obj['a']
if(obj[str[i]]){    
// 能进来说明已经存在这个属性
obj[str[i]]++
}else{
// 到这里说明没有这个属性,必须把这个属性添加进对象并赋值为1
// obj['a'] = 1
obj[str[i]] = 1
}
}
console.log(obj)

Math方法 PI

π 3.1415926

console.log(Math.PI)

向上取整 ceil
console.log(Math.ceil(10.1))
console.log(Math.ceil(10.5))
console.log(Math.ceil(10.9))
向下取整 floor
console.log(Math.floor(10.1))
console.log(Math.floor(10.5))
console.log(Math.floor(10.9))
四舍五入 round
console.log(Math.round(10.4))
console.log(Math.round(10.5))
console.log(Math.round(10.9))
幂数(次方)pow
console.log(Math.pow(2, 2))
console.log(Math.pow(2, 3))
console.log(Math.pow(2, 11))
根号(开平方根)sqrt
console.log(Math.sqrt(4))
console.log(Math.sqrt(9))
console.log(Math.sqrt(16))
随机数(0-1)random

console.log(Math.random())

指的是0-1之间的随机数,但是取1的概念极小

随机数公式

  • 一个范围,例如:20 --- 30
  • random = Math.random()*(max-min)+min

如果你想取到那个区间的随机数,可以进行向上取整或者向下取整

实例: 网页随机变色,隔一秒钟网页背景变化一个颜色

知识补充:

  • setInterval()定时器:可以让程序隔多长时间变化一次
  • 参数:
    • 参数1表示的是一个函数,里面可以处理具体的业务(可以使用匿名函数或者有名称的函数)
    • 参数2表示的是时间,以毫秒计算的(1秒==1000毫秒)

以下这些对象不需要获取可以直接使用

  • window
  • document
  • document.body
  • document.documentELement(html标记、根标记)
  • document.head
  • document.title
function randomBg(){
    var random = parseInt(Math.random()*(max-min)+min)
    document.body.bgColor = '#'+random
}
// 网页一打开时,先执行一次randomBg这个函数,会设置一个默认值。再等待1秒后开始让定时器调用函数
randomBg()

// 表示1秒后才去调用randomBg函数
setInterval(randomBg, 1000)
}
绝对值 abs
console.log(Math.abs(-10))
console.log(Math.abs(9))
求最小值 min

console.log(Math.min(10, 20))

求最大值 max

console.log(Math.max(30, 20))

实例: 实例:求直角三角形斜边长 勾股定理 c平方 = a * a + b * b

function getLong(a, b){
        var c = Math.pow(a, 2) + Math.pow(b, 2)
        c = Math.sqrt(c)
        return c 
}
var res = getLong(3, 4)
console.log(res) // 5

Date对象

获取完整的日期对象 var d = new Date()

获取日期对象
  • 获取年 console.log(d.getFullYear())

  • 获取月(老外它们月份是从0开始的,因此需要手动+1) console.log(d.getMonth()+1)

  • 获取周(星期) console.log(d.getDay())

  • 获取天 console.log(d.getDate())

  • 获取小时 console.log(d.getHours())

  • 获取分钟 console.log(d.getMinutes())

  • 获取秒 console.log(d.getSeconds())

  • 获取毫秒 console.log(d.getMilliseconds())

设置日期对象
d.setFullYear(2024)
d.setMonth(12)
console.log(d)

简单设置日期

日期格式:2023-12-1 12:30:20

日期格式:2023/12/1 12:30:20

var d = new Date('2024-03-20')
var d = new Date('2024/03/20 12:30:20')
console.log(d)

时间戳:指的是从1970年1月1日零时到现在经过的毫秒数

var d = new Date()
console.log(d.getTime())
实例:抢购倒计时

抢购倒计时

  • 利于将来的时间 - 现在的时间 = 差值(还剩多少时间)
  • 日期转换
    • 总的毫秒数 =
    • 总秒数 = (将来的时间戳 - 现在的时间戳)/1000
    • 剩余的天数 = 总秒数 / 3600 / 24
    • 剩余的小时 = 总秒数 / 3600 % 24
    • 剩余的分钟 = 总秒数 / 60 % 60
    • 剩余的秒数 = 总秒数 % 60
var content = document.getElementById('content')
// 设置将来的时间
var endDate = new Date('2023-12-12 00:00:00')
// 动态获取现在的时间
setInterval(function(){
    var nowDate = new Date()
    // 获取总秒数
    var seconds = parseInt((endDate.getTime() - nowDate.getTime())/1000)
    // 剩余的天数
    var day = change(parseInt(seconds/3600/24))
    // 剩余的小时
    var h = change(parseInt(seconds/3600%24))
    // 剩余的分钟
    var m = change(parseInt(seconds/60%60))
    // 剩余的秒数
    var s = change(parseInt(seconds%60))

    // 补位操作
    // day<10 ? day = '0'+ day : day
    // h<10 ? h = '0'+ h : h
    // m<10 ? m = '0'+ m : m
    // s<10 ? s = '0'+ s : s


    // 进行字符串拼接
    content.innerHTML = '距离王成脱单还剩'+day+'天'+h+'小时'+m+'分钟'+s+'秒'
}, 1000)

function change(num){
    return num<10 ? num = '0'+ num : num
}
知识点补充: innerHTML和innerText
  • 用来获取或者设置标记的内容的
  • innerHTML,可以解析标记
  • innerText,不能解析标记
  • value 专门用来获取表单和设置表单的值的
 var p = document.getElementById('p')

 // console.log(p.innerHTML)
 // console.log(p.innerText)

 // p.innerHTML = '<b>王成嘿嘿</b>'
 p.innerText = '<b>王成嘿嘿</b>'
抢购倒计时(改)
var content = document.getElementById('content')
// 设置将来的时间
var endDate = new Date('2023-12-12 00:00:00')

// 当一进入页面的时候就先调用一次倒计时函数,这样就可以先进行赋值一次,等待到了1秒后,定时器再去调用函数
djs()

function djs(){
var nowDate = new Date()
// 获取总秒数
var seconds = parseInt((endDate.getTime() - nowDate.getTime())/1000)
// 剩余的天数
var day = change(parseInt(seconds/3600/24))
// 剩余的小时
var h = change(parseInt(seconds/3600%24))
// 剩余的分钟
var m = change(parseInt(seconds/60%60))
// 剩余的秒数
var s = change(parseInt(seconds%60))
// 进行字符串拼接
content.innerHTML = '距离王成脱单还剩'+day+'天'+h+'小时'+m+'分钟'+s+'秒'
}

// 动态获取现在的时间
setInterval(djs, 1000)

function change(num){
return num<10 ? num = '0'+ num : num
}