JavaScript笔记

不同数据类型的存储模式
    <script>
        var obj={
            name:"lucy",
            age:18,
            location:"anhui"
        }
        for(var i in obj){
            console.log(obj.i)
        }
        // 复杂数据类型复制的时候是存储在堆内存里的
        // 直接复制会使得两个是一样的值,不能再改动
        var obj = {
            name="candy",
            age=18,
            address=anhui
        }
        var obj2=obj //这种方法会直接把obj的地址赋值给obj2,改变obj2会把obj也改变

        var obj2 = {}
        // 将obj中的属性遍历后赋值给obj2,则不会产生上述问题
        for(var i in obj){
            obj2[i]=obj[i]
        }
    </script>
冒泡排序

先遍历数组,再将紧挨着的两个值进行比较,如果前一个比后一个大就把俩个互换位置

   <script>   
     var numArr=[2,5,9,3,6,5]
        // 循环嵌套
        // 到第二次的时候可以减少一次循环,因为最后一个已经是最大的循环了
        for (var m=0;m<numArr.length-1;m++) {
            for(var i=0;i<numArr.length-1-m;i++){
            if (numArr[i]>numArr[i+1]) {
                var t = numArr[i]
                numArr[i]=numArr[i+1]
                numArr[i+1]=t
            }
        }
        }
        console.log(numArr)
    </script>
选择排序

假设数组中第0个就是最小索引,遍历数组后做比较,发现更小的就将其替换,直到找完找到最小的,放到第0个位置

        for(var m=0;m<numArr.length-1;m++) {
            var minindex=m
            for(var i=m+1;i<numArr.length;i++){
            if (numArr[i]<numArr[minindex]) {
                minindex=i
            }
        }
            var t=numArr[m]
            numArr[m]=numArr[minindex]
            numArr[minindex]=t
        }
        console.log(numArr)
字符串
        // 创建 
        var str1="hello"
        var str2=String("hello")

索引和下标都是只读的,无法修改值

       var str1[1]=a//报错
       //str不是数组,str[1]表示str中的第一个字符,只能读取该字符,无法改变
       str1="111"//修改了str1的值为111
  • charAt() 返回在指定位置的字符

  • charCodeAt() 返回在指定的位置的字符的 Unicode 编码

  • fromCharCode() 从字符编码创建一个字符串

  • indexOf() 检索字符串

  • concat() 连接字符串

  • substring() 提取字符串中两个指定的索引号之间的字符

  • split() 把字符串分割为字符串数组

        str = "hello world";
        var result = str.charAt(4);
        var result = str.charCodeAt(4);
        result = String.fromCharCode(72);
        result = str.concat("hi");
        result = str.indexOf("o");//重复内容返回第一个位置,没有该内容返回-1
        result = str.indexOf("o",6);//可以指定为位置开始查找
        result = str.slice(0,5);
        result = str.substring(1,2);//类似slice,但该方法不支持负值,负值默认当做0,而且substring会自动调整参数位置,如果第二个参数小于第一个,则自动交换
        result = str.split("o");//需要一个字符串作为参数,会根据该字符串去拆分
        alert(result); 
字符串的indexof方法和数组的filter
        //数组的filter方法(过滤)  字符串的indexof方法
        var arr = ["abc","abb","bcd"]
        var res = arr.filter(
            function(item){
                return item === "abc"//接受一个回调函数当返回ture的时候,数组内部符合要求的值可以出来,返回false则出不来
            }
        )
        //返回 abc

        // indexOf() 方法返回字符串中指定文本首次出现的索引(位置):
        // 0 是字符串中的第一个位置,1 是第二个,2 是第三个 ...
        var str = "The full name of China is the People's Republic of China.";
        var pos = str.indexOf("China");
模糊匹配
        // 模糊匹配
        var res = arr.filter(
            function(item){
                return item.indexOf("c")!=-1//如果不等于-1则代表拥有这个字符,可以被返回
            }
        )
        console.log(res)
JSON标准格式转换
    <script>
        // json字符串==>对象
        // {"key"=123,"key"="lucy"}
        var str = '{"name":"lucy","age":18}'//此时是字符串,必须严格按照格式要求,属性名也要加引号
        var obj = JSON.parse(str)
        console.log(obj)//转换成为对象
        //Object age: 18 name: "lucy"
        // 对象==>字符串
        var obj1 = {name:"lucy"}//属性名可以不用加引号
        var str1 = JSON.stringify(obj1)
        console.log(obj1,str1)
        //Object name: "lucy" / '{"name":"lucy"}'
    </script>
数字方法
        var x = 9.656;
        // 使用toFixed(保留的位数,采取四舍五入)
        var res1 = x.toFixed(0);           // 返回 10
        var res2 = x.toFixed(2);           // 返回 9.66
        var res3 = x.toFixed(4);           // 返回 9.6560
        var res4 = x.toFixed(6);           // 返回 9.656000
数学方法
  • Math.round(x) 的返回值是 x 四舍五入为最接近的整数:

  • Math.pow(x, y) 的返回值是 x 的 y 次幂:

  • Math.sqrt(x) 返回 x 的平方根:

  • Math.abs(x) 返回 x 的绝对(正)值:

  • Math.ceil(x) 的返回值是 x 上舍入最接近的整数:

  • Math.min() Math.max() 可用于查找参数列表中的最低或最高值:

  • Math.random() 返回介于 0(包括) 与 1(不包括) 之间的随机数:

随机数字

        // min--max(不包含最大值)
        function getRnd (max,min){
            return Math.floor(Math.random()*(max-min))+min
        }
        console.log(getRnd(20,30))

        // min--max(包含最大值)
        function getRnd (max,min){
            return Math.floor(Math.random()*(max-min+1))+min
        }
        console.log(getRnd(20,30))
Date
    <script>
        var date = new Date()
        console.log(date)//返回当前时间

        var date1 = new Date(10000)//一个参数为毫秒数
        var date2 = new Date(2023,3,3,10,10,10)//多个参数指定日期
        var date3 = new Date("2023-7-18 10:10:10")//传字符串必须按照指定格式
        var date3 = new Date("2023/7/18 10:10:10")
    </script>

toDateString() 方法将日期转换为更易读的格式

方法

描述

getDate()

以数值返回天(1-31)

getDay()

以数值获取周名(0-6)

getFullYear()

获取四位的年(yyyy)

getHours()

获取小时(0-23)

getMilliseconds()

获取毫秒(0-999)

getMinutes()

获取分(0-59)

getMonth()

获取月(0-11)

getSeconds()

获取秒(0-59)

getTime()

获取时间(从 1970 年 1 月 1 日至今)

<script>
var d = new Date();
document.getElementById("demo").innerHTML = d.getTime();//获取时间戳,返回自 1970 年 1 月 1 日以来的毫秒数
</script>
定时器
    <script>
        // 注册定时器
        // setTimeout(function(需要运行的代码),倒计时-以毫秒为单位)
        var time1=setTimeout(
            function(){
                alert("lucky")
            },3000//以毫秒为单位
        )
        // setTimeout(
        //         alert("888"),6000//以毫秒为单位
        // )
        //会在3秒之后开始执行代码,运行完成后结束

        var date = new Date()
        // 注册间隔定时器
        // setInterval(function(){执行语句},间隔时间--毫秒为单位)
        var time2= setInterval(
            function(){
                console.log(date)
            },3000//以毫秒为单位
        )

        // 清除两个计时器clearInterval/clearTimeout
//在html中写    <button id="btn1">清除定时计时器</button>
            // <button id="btn2">清除间隔定时器</button>
//此时获取按钮,则js代码要写在html中按钮注册之后
        // 获取计时器并绑定单击响应函数
        btn1.onclick = function(){
            clearTimeout(time1)
        }
        btn2.onclick = function(){
            clearInterval(time2)
        }
        // console.log(time1,time2)//返回计时器的顺序
    </script>

倒计时效果

    <script>
        // <!-- 两个时间相减会返回时间戳
        var now = {}
        var target = new Date("2023/6/18")
        console.log(target-now)//返回时间戳
        function diffTime(now,target){
            var sub = Math.ceil((target-now)/1000)
            var day = parseInt(sub%(60*60*24))
            var hour = parseInt(sub%(60*60*24)/(60*60))
            var minutes = parseInt(sub%(60*60)/60)
            var second = sub%60
            var obj = {
                day:day,
                hour:hour,
                minutes:minutes,
                second:second
            }
            return obj
        }
    
        setInterval(function(){
            var now = new Date()//这个now是定义在回调函数内部,作用域只有回调函数内
            var res = diffTime(now,target)
            // document.write(`距离618还有${res.day}天,${res.hour}时,${res.minutes}分${res.second}秒`)
            // document.write("<br>")
            box.innerHTML =`距离618还有${res.day}天,${res.hour}时,${res.minutes}分${res.second}秒`
        },1000)
    </script>
BOM

浏览器可视窗口的尺寸

console.log(window.innerHeight,innerHeight)
console.log(window.innerWidth,innerWidth)

弹出层

btn.onclick = function(){
var res =prompt("输入用户名")
console.log(res)
}
//点击按钮后弹出一个输入框,输入后内容会被打印在控制台

浏览器的地址信息

console.log(location.href)
btn.onclick=function(){
location.href="http://www.baidu.com"
}
//按下安按钮会转到 百度页面

页面重新加载

btn.onclick=function(){
location.reload()
}
// resize检测窗口大小  /横屏竖屏

获取滚动条距离

console.log(document.documentElement.scrollTop||document.body.scrollTop)
console.log(document.documentElement.scrollLeft||document.body.scrollLeft)

scrollTo滚动到指定位置

        btn.onclick=function(){
            window.scrollTo(0,0)
            或
            window.scrollTo{
                left:0,
                top:0
            }
        }

浏览器打开新页面

        // 浏览器打开标签页
        btn.onclick=function(){
            window.open("http://www.baidu.com")
        }//点击按钮可打开一个新页面
        btn.onclick=function(){
            window.close("http://www.baidu.com")
        }//点击按钮可关闭原来的页面

浏览器历史记录

        // 浏览器的历史记录
        window.history.back()
        // 用来退回历史记录,回到前一个页面
        window.history.forward()
        // 回到刚刚关闭的页面
        window.history.go(-1/1/...)

浏览器的本地储存

        // 存储只能存字符串,不能存对象,如果要存储对象,就要使用JSON进行转换
        localStorage.setItem()
        localStorage.getItem()
        localStorage.removeItem()
        localStorage.clear()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值