Js查漏補缺-03

0x00 內置對象

  ·Date對象中的getMonth()方法獲取的月份比實際月份小一;

  ·獲取時間戳的方法:

    ①var time = +new Date();

    ②var time = Date.now(); // h5 新增

  ·數組對象常用方法

    ①isArray();判斷是否爲數組,返回值爲true or false;

    ②push();向數組末尾添加數組元素; 返回值爲數組長度;

    ③pop();向數組末尾去除一個元素;返回值爲刪除的元素

    ④unshift();向數組開頭添加數組元素;返回值爲數組長度;

    ⑤shift();刪除數組第一個元素;返回值爲刪除的元素;

    ⑥reverse();翻轉數組;

    ⑦sort();數組排序 

    升序

  <script>
     let arr1 = [1,39,24,11,456];
     arr1.sort((a,b) => {
         return a-b;
     })
     console.log(arr1);
  </script>

  降序

  <script>
     let arr1 = [1,39,24,11,456];
     arr1.sort((a,b) => {
         return b-a;
     })
     console.log(arr1);
  </script>

    ⑧查找數組索引

     indexOf();從數組前面開始查找,找到第一個匹配的元素後返回該元素的索引;若無匹配,則返回-1;

     lastIndexof();從數組末尾開始查找,找到第一個匹配的元素後返回該元素的索引;若無匹配,則返回-1;

面試經典案例,數組去重

 

  <script>
     let arr1 = [1,39,24,11,456,1281,39,234,123,5,23,53,11,234];
     let unique = (arr1) => {
         let arr2 = [];
         for(let i = 0;i < arr1.length;i++){
             if(arr2.indexOf(arr1[i]) === -1){
                 arr2[arr2.length] = arr1[i];
             }
         }
         console.log(arr2);
     }
     unique(arr1);
  </script>

    ⑨join();可以將數組轉換爲字符串,分隔符作爲參數輸入;

    ⑩splice();可以用來刪除或者添加數組中的元素

let myFish = ['angel', 'clown', 'drum', 'sturgeon'];
let removed = myFish.splice(2, 1, "trumpet");

// 運算後的 myFish: ["angel", "clown", "trumpet", "sturgeon"]
// 被刪除的元素: ["drum"]

0x01 字符串對象

    ①定義字符串時進行了基本數據類型包裝,將簡單數據類型轉換爲了複雜數據類型

    ②字符串的不可變性,當聲明並賦值一個字符串時,js在內存中開闢了一塊空間用來存儲該字符串,並指向這個空間,當字符串被修改時,js會新開闢一塊空間用來儲存新字符串,並指向新的空間,但原來的值並沒有改變

經典面試題  查找某字符串中的某個元素的出現次數和位置

  <script>
     let str1 = 'shdbavsciajsifuirhabsj';
     let queryString = (str1) => {
         let frequency = 0;
         let lastFlag = -1;
         for (let i = 0; i<str1.length; i++){
             let flag = str1.indexOf('s',i);
             if(flag !== -1 && flag !== lastFlag){
                 frequency++;
                 lastFlag = flag;
                 console.log('第'+frequency+'次出現,位置爲'+flag);
             }
         }
     }
     queryString(str1);
  </script>

    ③charAt();根據位置返回字符

    ④charCodeAt();根據位置返回字符的ascii碼,可以用來判斷用戶按了哪個鍵

    經典面試題  判斷一個字符串中出現次數最多的字符是哪個,並統計其次數

  <script>
     let str1 = 'shdbavsciajsifuirhabsj';
     let queryString = (str1) => {
         let obj = {};
         for (let i = 0; i < str1.length; i++){
             if(obj[str1[i]]){
                 obj[str1[i]]++;
             }else{
                 obj[str1[i]] = 1;
             }
         }
         let maxNum = 0;
         let maxChar;
         for (let k in obj){
             if(obj[k] > maxNum){
                 maxNum = obj[k];
                 maxChar = k;
             }
         }
         console.log('出現次數最多的字符是' + maxChar + '\n' + '出現次數爲:' + maxNum );
     }
     queryString(str1);
  </script>

    ⑤substr();截取字符串,輸入的參數爲起始位置和截取的長度;

    ⑥replace();替換字符串;

  0x02 簡單數據類型和複雜數據類型

      簡單數據類型又稱值類型,在儲存時變量儲存的是值本身,簡單數據類型有string,boolean,number,null,undefined五種,其中null返回值爲空對象;簡單數據類型數據存儲直接存儲在棧裏面。所以簡單;類型的傳參,數據不會互相影響;

      複雜數據類型又稱引用類型,用new創建的都是複雜數據類型。複雜數據類型在棧中存放地址,地址指向堆中的某區域,數據都儲存在堆中的這塊空間中。所以複雜數據類型的傳參,屬性值的更改會相互影響;

  <script>
     let obj = {
         name : 'aaa',
         age : 14
     }
     let fn = (obj1) => {
         console.log(obj1.age);
         obj1.age = 28;
     }
     fn(obj);
     console.log(obj.age);
  </script>

 0x03 Dom

    ①console.dir()可以打印元素對象,更好的查看裏面的屬性方法;

    ②常用的Dom選擇元素的方法:getElementsById();   getElementsByTagName()    getElementsByClassName();

        querySelector(); // h5新特性,只返回匹配到的第一個元素

        querySelectorAll(); //同上,返回匹配到的所有元素

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章