主頁 > 前端設計 > day10 - JavaScript字串、切割資料地址、過濾資料、日期物件相關知識、定時器、頁面停留時間、倒計時

day10 - JavaScript字串、切割資料地址、過濾資料、日期物件相關知識、定時器、頁面停留時間、倒計時

2021-12-20 07:42:12 前端設計

一、字串

1.字串創建方式

1.字面量方式:

var str = 'hello' ;   //string

2.new String() 方式

var str = new String('hello') ;   //object
2.字串的角標的長度

字串的長度和角標只能讀取,不能改寫

// 字串的長度和角標只能讀取,不能改寫
        var str = 'hello' ;
        console.log(str.length) ; // 5
        console.log(str[0]) ;     // h

        str[5] = 'w' ;  //無效
        console.log(str) ;  //hello  說明str[5] = 'w'是無效的
3.字串的方法
  • includes:判斷字串中是否存在某個值,存在回傳true,不存在回傳false
        var str = 'hello' ;
        console.log(str.includes('m')) ;  //false
        console.log(str.includes('h')) ;  //true
  • indexOf:判斷字串中是否存在某個值,存在就回傳角標,不存在就回傳-1
        var str = 'hello' ;
        console.log(str.indexOf('m')) ;  // -1
        console.log(str.indexOf('h')) ;  // 0
  • lastIndexOf:判斷字串中是否存在某個值,存在就回傳最后出現的值的角標,不存在就回傳-1
        var str = 'hello' ;
        console.log(str.lastIndexOf('m')) ;  // -1
        console.log(str.lastIndexOf('l')) ;  // 3
  • concat:字串拼接
        var str = 'hello' ;
        var str2 = ' world' ;
        console.log(str.concat(str2)) ; //hello world
  • slice(開始下標,結束下標):截取,包頭不包尾
        var str = 'hello' ;
        console.log(str.slice(2 , 4)) ;  //ll
  • charAt(index) :訪問角標對應的值
        var str = 'hello' ;
        console.log(str.charAt(0)) ;  // h
  • charCodeAt(index):訪問角標對應的值的ASCII值
        var str = 'hello' ;
        console.log(str.charCodeAt(1)) ; // 101
  • String.fromCharCode():把ASCII值轉成對應的字符
        console.log(String.fromCharCode(98)) // b
  • substring(開始下標,結束下標);截取,包頭不包尾; 只能用于字串, 引數不能為負數
        var str = 'hello' ;
        console.log(str.substring(0 , 3)) // hel
  • substr(開始下標,截取個數);
        var str = 'hello' ;
        console.log(str.substr(1 , 2)) ; // el
  • trim() :去掉首尾的空格,回傳新字串
        var str = ' hello ' ;
        console.log(str.trim()) ;  //hello
  • split():通過 分隔符 切割字串為陣列
        var str = ' hello ' ;
        console.log(str.split('')) ;  //['h', 'e', 'l', 'l', 'o']
        console.log(str.split(' ')) ;  //['hello']
        console.log(str.split('e')) ;  //['h', 'llo']
  • replace(old , new) :替換(默認只會替換第一個)
        var str = ' hello ' ;
        console.log(str.replace('l' , 'm')) ;  // hemlo
  • toUpperCase() :大寫
        var str = ' hello ' ;
        console.log(str.toUpperCase()) ;  //HELLO
  • toLowerCase() :小寫
        var str = 'HELLO' ;
        console.log(str.toLowerCase()) ;  // hello

二、js 切割 url 地址(字串方法)

1.單個值
var url = 'https://www.baidu.com/s?ie=UTF-8&wd=baidu' ;
        //獲取url中"?"符后的字串
        console.log(url.split("?")[1]) ;  //ie=UTF-8&wd=baidu
2.切割?后面的部分并且轉換存盤在陣列中
        var url = 'https://www.baidu.com/s?ie=UTF-8&wd=baidu' ;
        //獲取url中"?"符后的字串
        var str = url.split('?')[1] ;
        //將獲取的字串安裝&切割成陣列
        var arr = str.split('&') ;
        //遍歷陣列
        var res = [] ;
        for(var i = 0 ; i < arr.length ; i++){
            //將陣列中的值按照=切割
            var list = arr[i].split('=') ;
            //添加到res中去
            res.push(list) ;
        }
        console.log(res) ; //[['ie', 'UTF-8'];['wd', 'baidu']] ;

使用map()方法切割
map( ): map( ) 改變陣列中的值,回傳一個新的陣列 必須return

        var url = 'https://www.baidu.com/s?ie=UTF-8&wd=baidu' ;
        var str = url.split('?')[1] ;
        var arr = str.split('&') ;
        var res = arr.map(function (v){
            return v.split('=') ; 
        })
        console.log(res) ; //[['ie', 'UTF-8'],['wd', 'baidu']] ;
3. 切割?后面的部分并且轉換成物件
        var url = 'https://www.baidu.com/s?ie=UTF-8&wd=baidu' ;
        var str = url.split('?')[1] ;
        var arr = str.split('&') ;
        //切割后存盤在物件中
        var res = arr.map(function (v){
            //遍歷這個新陣列,將資料放入物件中去
            var obj = {} ;
            //將里面的陣列單個元素,再次進行拆分為一個新的單個陣列
            var list = v.split('=') ;
            //分別將陣列的第一和第二個元素 作為 物件的屬性名和屬性值
            obj[list[0]] = list[1] ;
            return obj 
        })
        列印輸出一下
        console.log(res) ;

在這里插入圖片描述

三、filter資料過濾

1.過濾陣列
        var arr = ['hello' , 'hi' , 'hei' , 'hehe' , 'xixi' , 'pupu'];
        //找到包含h的
        var res = arr.filter(function (v) {
            return v.includes('h') ;
        })
        console.log(res) ;   //['hello', 'hi', 'hei', 'hehe']
2.過濾物件
        var data = [
            {
                title : '小米11' ,
                content : '輕薄5G,內外兼修' ,
                price : 1999
            },
            {
                title : '小米青春版2' ,
                content : '輕薄5G,內外兼修2' ,
                price : 1299
            },
            {
                title : '小米家庭11' ,
                content : '輕薄5G,內外兼修' ,
                price : 1999
            }
        ]

        var res2 = data.filter(function (v) {  
            //過濾物件title中包含11的
            return v.title.includes('11')
        })

在這里插入圖片描述

四、日期物件

日期物件的作用是記錄時間,顯示的是區時,在JavaScript中 1970.1.1 0:0:0 是標準時間

1.日期物件的創建方法:
  • 無參創建:拿到的是電腦的當前時間
        var date = new Date() ;
        console.log(date) ;  //Sun Dec 19 2021 01:50:21 GMT+0800 (中國標準時間)
  • 有參創建:拿到的是特定時間的日期物件
        var date = new Date(0) ; //Thu Jan 01 1970 08:00:00 GMT+0800 (中國標準時間)
        console.log(date) ; 
        //1000這個引數是一個毫秒值 從1970年1月1日00:00:00開始加上這個一個毫秒值
        //數字單參創建,毫秒數  1s = 1000ms
        var date2 = new Date(1000) ;  
        console.log(date2) ;  //Thu Jan 01 1970 08:00:01 GMT+0800 (中國標準時間)

        //數字多參創建  年月日時分秒
        //注意:月份是從0開始的,時間可以自動計算
        var date3 = new Date(2020,13,1,1,1,1) ; 
        console.log(date3) ;  //Mon Feb 01 2021 01:01:01 GMT+0800 (中國標準時間)
        //字串單參創建  年[-*,]月[-*,]日 時:分:秒
        //時間是正常的,也是不能自動計算的
        var date4 = new Date('2021-1-1 1:1:1') ;
        console.log(date4) ; //Fri Jan 01 2021 01:01:01 GMT+0800 (中國標準時間)
2.日期物件的方法:
  • 獲取年份
        var date = new Date() ;
        var year = date.getFullYear() ;
        console.log(year) ;  //2021
  • 獲取月份 注:月份是從 0 開始的
        var month = date.getMonth() + 1;
        console.log(month) ;  //12
  • 獲取日期/天(1-31)
        var day = date.getDate() ;
        console.log(day) ;  //19
  • 獲取星期 注:星期也是從0開始 ,星期天0 0-6
        var week = date.getDay() ;
        console.log(week) ;  //0
  • 獲取小時 (0-23)
        var hour = date.getHours() ;
        console.log(hour) ;  // 17
  • 獲取分鐘(0-59)
        var minute = date.getMinutes() ;
        console.log(minute) ;  // 20
  • 獲 取秒 / 取秒數(0-59)
        var second = date.getSeconds() ;
        console.log(second);

利用封裝函式獲取日期

        var date = formatDate() ;
        document.write(date) ;   

        function formatDate(){
            var date = new Date() ;

            var year = date.getFullYear() ;

            var month = date.getMonth() + 1;

            var day = date.getDate() ;

            var week = date.getDay() ;

            var hour = date.getHours() ;

            var minute = date.getMinutes() ;

            var second = date.getSeconds() ;

            var arr = ['星期天' , '星期一' , '星期二' , '星期三' , '星期四' , '星期五' , '星期六'];

            return year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second + ' ' + arr[week] 
        }

在這里插入圖片描述

注:在日期物件中,set/get既能獲取又能賦值 get只能獲取

3.設定時間

可以通過set設定年月日,時分秒,但是星期不能設定,會報錯,

        var date = new Date() ;
        //設定年份
        date.setFullYear(2020) ;
        //設定月份  時間可以自動計算
        dote.setMonth(12) ;
        //設定日期
        date.setDate(10) ;
        //設定小時
        date.setHours(10) ;
        //設定分鐘
        date.setMinutes(10) ;
        //設定秒
        date.setSeconds(1000) ;

4.獲取上個月、本月天數

  • 獲取上個月天數分析:本月的第0天也就是上個月的最后一天
        var date = new Date() ;
        date.setDate(0) ;
        console.log(date) ;
  • 獲取本月天數分析:獲取本月天數,我們可以先把日期推到下個月,然后再把日期推到第0天,此時就是上個月的天數,
        var date = new Date('2021-1-31') ;

        // 把日期推到下個月   32-58
        date.setDate(33) ;

        // 把日期推到第0天,也就是上個月的最后一天
        nextMonth.setDate(0) ;
        console.log(date);

五、定時器

1.定時器的作用:
  • 重復的鬧鐘
  • 每隔一段時間,做一件事
2.延時器的作用:
  • 一段時間后做一件事
3.間歇呼叫:

setInterval(fn , time) setInterval() 方法接受兩個引數,第一個引數是函式,第二個引數是時間(單位毫秒)
取消呼叫clearInterval()

4.JS中用變數存盤定時器的時候,變數存盤的是頁面當中的第幾個定時器:
        var t1= setInterval(function () {
            console.log(666) ;
        },1000)
       //t1的值為1,當前是第一個定時器

        var t2 = setInterval(function (){
            console.log(777) ;
        },2000)     
      //t2的值為2 當前是第二個定時器
5.同步和異步:

JS的任務佇列分為兩種,同步任務和異步任務:

  • 同步任務:即后一個任務需等待前一個任務結束后,才能執行,程式的執行順序與任務的排列順序是一致的、同步的;
  • 異步任務:即每一個任務有一個或多個回呼函式(callback),前一個任務結束后,不是執行后一個任務,而是執行回呼函式,后一個任務則是不等前一個任務結束就執行,所以程式的執行順序是不一致的、異步的,(同時干很多事情)
6.單執行緒和多執行緒:
  • 單執行緒:一次干一件事情
  • 多執行緒:一次干很多事情

js一種單執行緒的語言
js主要是進行標簽操作(無法一邊修改標簽,一邊洗掉標簽)
js代碼同步為主的(從上往下一個個的執行代碼)
js代碼中也存在一些異步程式 事件處理函式,定時器

js代碼執行順序
1 先在主執行緒上執行同步代碼,遇到異步,就放在任務佇列中
2 所有的同步執行完畢以后,如果任務佇列中有已經到時間了,可以執行了,(這個任務就可以在主執行緒上執行)

接下來看個簡單的例子吧~
分析:按照我們的寫法,應該是先執行t1,t2,再列印1,2 ,但是定時器是異步的,在js代碼中的執行順序:是現在主執行緒上執行同步代碼的,遇到異步,就放在任務佇列中了,等所有的同步執行完畢后,再執行異步,

        var t1 = setInterval(function () {  
            console.log(666);
        },1000)

        var t2 = setInterval(function () {  
            console.log(777);
        },2000)

        document.onclick = function () {  
            console.log(999);
        }

        console.log(1);
        console.log(2);

在這里插入圖片描述

7.頁面停留時間:
    <h1 id = "time"></h1>
    
    <script>
        var oH1 = document.getElementById('time') ;
        var count = 0 ;

        oH1.innerHTML = '你在頁面停留了' + count + 's' ;

        setInterval(function () {
            count++ ;
            oH1.innerHTML = '你在頁面停留了' + count + 's' ;
        },1000) 
    </script>

在這里插入圖片描述

8.走動的時間:
    <h1 id="time"></h1>
    
    <script>
        //補零
        var oH1 = document.getElementById('time') ;

        var res = formatDate() ;

        oH1.innerHTML = res ;

        setInterval(function () {
            var res = formatDate() ;
            oH1.innerHTML = res ;
        },1000)

        function formatDate() {  
            var date = new Date() ;

            var year = date.getFullYear() ;

            // 月份是從0開始的
            var month = date.getMonth() + 1;

            var day = date.getDate() ;

            // 星期也是從0開始 ,星期天0  0-6
            var week = date.getDay() ;

            var hour = date.getHours() ;

            var minute = date.getMinutes() ;

            var second = date.getSeconds() ;

            var arr = ['星期天' , '星期一' , '星期二' , '星期三' , '星期四' , '星期五' , '星期六'];

            return year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second + ' ' + arr[week] 

        }
    </script>

在這里插入圖片描述

8.倒計時實作:
    <h1>距離下課還有<span id='time'></span></h1>
    
    <script>

        var oTime = document.getElementById('time') ;

        //目標時間
        var tt = new Date('2021-12-19 23:0:0')
        showDate(tt) ;

        function showDate(t) {
            var future = new Date(t) ;
            //當前時間
            var now = new Date() ;
             // 時間是可以相減的  --- 毫秒數
            var gap = future - now ;
            allSeconds = parseInt(gap / 1000) ;

            //判斷倒計時是否結束
            if(allSeconds <= 0){
                oTime.innerHTML = '時間已過期了' ;
                return 
            }

            //獲取小時
            var h = parseInt(allSeconds / 3600) ;
            //計算分鐘
            var m = parseInt(allSeconds % 3600 /60) ;
            //計算秒
            var s = allSeconds % 60 ;

            oTime.innerHTML = h + ':' + m + ':' + s ;
        }

        
        // setInterval的第三個包括后面的引數都是給第一個函式的引數
        // var t = setInterval(showDate,1000,tt)
    
         var t = setInterval(function (){
             showDate(tt) ;
             console.log(tt) ;
             console.log(allSeconds) ;
             if(allSeconds <= 0) {
                 console.log(666) ;
                 clearInterval(t) ;
             }
         })


    </script>

在這里插入圖片描述

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/386612.html

標籤:其他

上一篇:【愚公系列】2021年12月 python爬蟲自動化-爬蟲環境搭建

下一篇:JavaScript零基礎入門 7:JavaScript基礎函式

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • vue移動端上拉加載

    可能做得過于簡單或者比較low,請各位大佬留情,一起探討技術 ......

    uj5u.com 2020-09-10 04:38:07 more
  • 優美網站首頁,頂部多層導航

    一個個人用的瀏覽器首頁,可以把一下常用的網站放在這里,平常打開會比較方便。 第一步,HTML代碼 <script src=https://www.cnblogs.com/szharf/p/"js/jquery-3.4.1.min.js"></script> <div id="navigate"> <ul> <li class="labels labels_1"> ......

    uj5u.com 2020-09-10 04:38:47 more
  • 頁面為要加<!DOCTYPE html>

    最近因為寫一個js函式,需要用到$(window).height(); 由于手寫demo的時候,過于自信,其實對前端方面的認識也不夠體系,用文本檔案直接敲出來的html代碼,第一行沒有加上<!DOCTYPE html> 導致了$(window).height();的結果直接是整個document的高 ......

    uj5u.com 2020-09-10 04:38:52 more
  • WordPress網站程式手動升級要做好資料備份

    WordPress博客網站程式在進行升級前,必須要做好網站資料的備份,這個問題良家佐言是遇見過的;在剛開始接觸WordPress博客程式的時候,因為升級問題和博客網站的修改的一些嘗試,良家佐言是吃盡了苦頭。因為購買的是西部數碼的空間和域名,每當佐言把自己的WordPress博客網站搞到一塌糊涂的時候 ......

    uj5u.com 2020-09-10 04:39:30 more
  • WordPress程式不能升級為5.4.2版本的原因

    WordPress是一款個人博客系統,受到英文博客愛好者和中文博客愛好者的追捧,并逐步演化成一款內容管理系統軟體;它是使用PHP語言和MySQL資料庫開發的,用戶可以在支持PHP和MySQL資料庫的服務器上使用自己的博客。每一次WordPress程式的更新,就會牽動無數WordPress愛好者的心, ......

    uj5u.com 2020-09-10 04:39:49 more
  • 使用CSS3的偽元素進行首字母下沉和首行改變樣式

    網頁中常見的一種效果,首字改變樣式或者首行改變樣式,效果如下圖。 代碼: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, ......

    uj5u.com 2020-09-10 04:40:09 more
  • 關于a標簽的講解

    什么是a標簽? <a> 標簽定義超鏈接,用于從一個頁面鏈接到另一個頁面。 <a> 元素最重要的屬性是 href 屬性,它指定鏈接的目標。 a標簽的語法格式:<a href=https://www.cnblogs.com/summerxbc/p/"指定要跳轉的目標界面的鏈接">需要展示給用戶看見的內容</a> a標簽 在所有瀏覽器中,鏈接的默認外觀如下: 未被訪問的鏈接帶 ......

    uj5u.com 2020-09-10 04:40:11 more
  • 前端輪播圖

    在需要輪播的頁面是引入swiper.min.js和swiper.min.css swiper.min.js地址: 鏈接:https://pan.baidu.com/s/15Uh516YHa4CV3X-RyjEIWw 提取碼:4aks swiper.min.css地址 鏈接:https://pan.b ......

    uj5u.com 2020-09-10 04:40:13 more
  • 如何設定html中的背景圖片(全屏顯示,且不拉伸)

    1 <style>2 body{background-image:url(https://uploadbeta.com/api/pictures/random/?key=BingEverydayWallpaperPicture); 3 background-size:cover;background ......

    uj5u.com 2020-09-10 04:40:16 more
  • Java學習——HTML詳解(上)

    HTML詳解 初識HTML Hyper Text Markup Language(超文本標記語言) 1 <!--DOCTYPE:告訴瀏覽器我們要使用什么規范--> 2 <!DOCTYPE html> 3 <html lang="en"> 4 <head> 5 <!--meta 描述性的標簽,描述一些 ......

    uj5u.com 2020-09-10 04:40:33 more
最新发布
  • 我的第一個NPM包:panghu-planebattle-esm(胖虎飛機大戰)使用說明

    好家伙,我的包終于開發完啦 歡迎使用胖虎的飛機大戰包!! 為你的主頁添加色彩 這是一個有趣的網頁小游戲包,使用canvas和js開發 使用ES6模塊化開發 效果圖如下: (覺得圖片太sb的可以自己改) 代碼已開源!! Git: https://gitee.com/tang-and-han-dynas ......

    uj5u.com 2023-04-20 07:59:23 more
  • 生產事故-走近科學之消失的JWT

    入職多年,面對生產環境,盡管都是小心翼翼,慎之又慎,還是難免捅出簍子。輕則滿頭大汗,面紅耳赤。重則系統停擺,損失資金。每一個生產事故的背后,都是寶貴的經驗和教訓,都是專案成員的血淚史。為了更好地防范和遏制今后的各類事故,特開此專題,長期更新和記錄大大小小的各類事故。有些是親身經歷,有些是經人耳傳口授 ......

    uj5u.com 2023-04-18 07:55:04 more
  • 記錄--Canvas實作打飛字游戲

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 打開游戲界面,看到一個畫面簡潔、卻又富有挑戰性的游戲。螢屏上,有一個白色的矩形框,里面不斷下落著各種單詞,而我需要迅速地輸入這些單詞。如果我輸入的單詞與螢屏上的單詞匹配,那么我就可以獲得得分;如果我輸入的單詞錯誤或者時間過長,那么我就會輸 ......

    uj5u.com 2023-04-04 08:35:30 more
  • 了解 HTTP 看這一篇就夠

    在學習網路之前,了解它的歷史能夠幫助我們明白為何它會發展為如今這個樣子,引發探究網路的興趣。下面的這張圖片就展示了“互聯網”誕生至今的發展歷程。 ......

    uj5u.com 2023-03-16 11:00:15 more
  • 藍牙-低功耗中心設備

    //11.開啟藍牙配接器 openBluetoothAdapter //21.開始搜索藍牙設備 startBluetoothDevicesDiscovery //31.開啟監聽搜索藍牙設備 onBluetoothDeviceFound //30.停止監聽搜索藍牙設備 offBluetoothDevi ......

    uj5u.com 2023-03-15 09:06:45 more
  • canvas畫板(滑鼠和觸摸)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>canves</title> <style> #canvas { cursor:url(../images/pen.png),crosshair; } #canvasdiv{ bo ......

    uj5u.com 2023-02-15 08:56:31 more
  • 手機端H5 實作自定義拍照界面

    手機端 H5 實作自定義拍照界面也可以使用 MediaDevices API 和 <video> 標簽來實作,和在桌面端做法基本一致。 首先,使用 MediaDevices.getUserMedia() 方法獲取攝像頭媒體流,并將其傳遞給 <video> 標簽進行渲染。 接著,使用 HTML 的 < ......

    uj5u.com 2023-01-12 07:58:22 more
  • 記錄--短視頻滑動播放在 H5 下的實作

    這里給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 短視頻已經無數不在了,但是主體還是使用 app 來承載的。本文講述 H5 如何實作 app 的視頻滑動體驗。 無聲勝有聲,一圖頂百辯,且看下圖: 網址鏈接(需在微信或者手Q中瀏覽) 從上圖可以看到,我們主要實作的功能也是本文要講解的有: ......

    uj5u.com 2023-01-04 07:29:05 more
  • 一文讀懂 HTTP/1 HTTP/2 HTTP/3

    從 1989 年萬維網(www)誕生,HTTP(HyperText Transfer Protocol)經歷了眾多版本迭代,WebSocket 也在期間萌芽。1991 年 HTTP0.9 被發明。1996 年出現了 HTTP1.0。2015 年 HTTP2 正式發布。2020 年 HTTP3 或能正... ......

    uj5u.com 2022-12-24 06:56:02 more
  • 【HTML基礎篇002】HTML之form表單超詳解

    ??一、form表單是什么

    ??二、form表單的屬性

    ??三、input中的各種Type屬性值

    ??四、標簽 ......

    uj5u.com 2022-12-18 07:17:06 more