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(); //同上,返回匹配到的所有元素

 

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