數(shù)組、字符串、數(shù)學(xué)函數(shù)

問(wèn)答:

1. 數(shù)組方法里push、pop、shift、unshift、join、split分別是什么作用。(*)

  • push
    push方法作用是在數(shù)組的后面添加一個(gè)或多個(gè)數(shù)值,返回變化后的數(shù)組長(zhǎng)度length:
    push
  • pop
    與push對(duì)應(yīng),作用是在數(shù)組的后面去除一個(gè)或多個(gè)數(shù)值,返回去除的值:
    pop

    push和pop是堆棧的方法,就是后進(jìn)先去,即只能在一端對(duì)數(shù)據(jù)進(jìn)行操作,pop一次只移除一個(gè)值,push可以添加多個(gè)值。
  • shift:作用是移除數(shù)組開(kāi)頭部分的一個(gè)值,返回移除的值:
    shift
  • unshift:作用是在數(shù)組開(kāi)頭部分增加一個(gè)值或多個(gè)值,返回變化數(shù)組的長(zhǎng)度;
    unshift
  • join:join將數(shù)組項(xiàng)合并成一個(gè)字符串,join接受一個(gè)參數(shù),數(shù)組項(xiàng)之間的分隔符,默認(rèn)是逗號(hào):
    join
  • split:是string數(shù)據(jù)類型的一種方法,用于分割字符串為數(shù)組,與數(shù)組的join方法對(duì)應(yīng)。有兩個(gè)參數(shù),第一個(gè)是以什么分隔符來(lái)分割元素,默認(rèn)情況是字符串整體作為數(shù)組的一項(xiàng),有且僅有一項(xiàng),第二個(gè)是分割出來(lái)的數(shù)組項(xiàng)個(gè)數(shù)。
    split

代碼:

數(shù)組:

1. 用 splice 實(shí)現(xiàn) push、pop、shift、unshift方法 (***)

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>task18</title>
  </head>
  <body>
    <script>
      // 1. 用 splice 實(shí)現(xiàn) push、pop、shift、unshift方法 (***)
      function push(arr, val) {
        arr.splice(arr.length, 0, val);
        return arr.length;
      }

      function pop(arr) {
        var val = arr.splice(arr.length-1,1);
        return val;
      }

      function shift(arr) {
        var val = arr.splice(0,1);
        return val;
      }

      function unshift(arr, val) {
        arr.splice(0, 0, val);
        return arr.length;
      }
      var arr1 = [11,22,33,44,55,66,77];
    </script>
  </body>
</html>
代碼1

2. 使用數(shù)組拼接出如下字符串 (***)

<script>
      // 2.使用數(shù)組拼接出如下字符串 (***)
      var prod = {
        name: '女裝',
        style: ['短款', '冬季', '春裝']
      };
      function getTplStr(data){
        data.style.unshift(data.name);
        var arr1 = data.style;
        var arr2 = [];
        arr2[0] = '<dl class="product">';
        arr2[1] = '\t' + '<dt>' + arr1[0] + '</dt>';
        for(var i = 0; i < arr1.length; i++) {
          arr2[i+2] = '\t' + '<dd>' + arr1[i+1] + '</dd>';
        }
        arr2[arr2.length-1] = '</dl>';
        console.log(arr2.join("\n"));
      }
      var result = getTplStr(prod);
      console.log(result);
      </script>
代碼2

3. 寫一個(gè)find函數(shù),實(shí)現(xiàn)下面的功能 (***)

<script>
      var arr3 = ["test", 2, 1.5, false];
      console.log(find(arr3, "test"));
      console.log(find(arr3, 2));
      console.log(find(arr3, 0));

      function find(arr, val) {
        var result = -1;
        for(var j = 0; j < arr.length; j++) {
         if(val === arr[j]) {
           result = j;
         }
        }
        return result;
      }
</script>
代碼3

4. 寫一個(gè)函數(shù)filterNumeric,把數(shù)組 arr 中的數(shù)字過(guò)濾出來(lái)賦值給新數(shù)組newarr, 原數(shù)組arr不變 (****)

<script>
      //4. 寫一個(gè)函數(shù)filterNumberic,把數(shù)組 arr 中的數(shù)字過(guò)濾出來(lái)賦值給新數(shù)組newarr, 原數(shù)組arr不變 (****)
      var arr4 = ["a", "b", 1, 3, 5, "b", 2];
      var newarr = filterNumberic(arr4);
      console.log(newarr);
      function filterNumberic(arr) {
        var result = [];
        for(var i = 0; i < arr.length; i++) {
          if(typeof arr[i] == "number") {
            result.push(arr[i]);
          }
        }
        return result;
      }
</script>
      ```
![代碼4](http://upload-images.jianshu.io/upload_images/2404178-672b8c65788a1b0f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
####5. 對(duì)象obj有個(gè)className屬性,里面的值為的是空格分割的字符串(和html元素的class特性類似),寫addClass、removeClass函數(shù),有如下功能:(\*\***)
``` html
<script>
      //5. 對(duì)象obj有個(gè)className屬性,里面的值為的是空格分割的字符串(和html元素的class特性類似),寫addClass、removeClass函數(shù),有如下功能:(****)
      var obj = {
        className: 'open menu'
      }
      console.log(addClass(obj, 'new'));
      console.log(addClass(obj, 'open'));
      console.log(addClass(obj, 'me'));
      console.log(obj.className);

      console.log(removeClass(obj, 'open'));
      console.log(removeClass(obj, 'blabla'));

      function addClass(obj, val) {
        var arr5 = obj.className.split(" ");
        for(var i = 0; i < arr5.length; i++) {
          if(val === arr5[i]) {
            return;
          }
        }
        return obj.className += ' ' + val;
      }

      function removeClass(obj, val) {
        var arr5 = obj.className.split(" ");
        for(var i = 0; i < arr5.length; i++) {
          if(val === arr5[i]) {
            arr5.splice(arr5[i],1);
            return arr5.join(" ");
          }
        }
      }
</script>
代碼5

6. 寫一個(gè)camelize函數(shù),把my-short-string形式的字符串轉(zhuǎn)化成myShortString形式的字符串,如 (***)

<script>
      //6. 寫一個(gè)camelize函數(shù),把my-short-string形式的字符串轉(zhuǎn)化成myShortString形式的字符串,如 (***)
      console.log(camelize("background-color"));
      console.log(camelize("list-style-image"));

      function camelize(str) {
        var arr = str.split("");
        for(var i = 0; i < arr.length; i++) {
          if(arr[i] === "-") {
            arr.splice(i,1);
          }
        }
        return arr.join("");
      }
</script>
代碼6

7. 如下代碼輸出什么?為什么? (***)

<script>
      //7. 如下代碼輸出什么?為什么? (***)
      arr = ["a", "b"];
      arr.push( function() { alert(console.log('hello hunger valley')) } );
      arr[arr.length-1]()
      
</script>

原因是console.log的返回值是undefined,所以立即執(zhí)行的函數(shù)表達(dá)式執(zhí)行結(jié)果為彈窗undefined。

8. 寫一個(gè)函數(shù)filterNumericInPlace,過(guò)濾數(shù)組中的數(shù)字,刪除非數(shù)字。要求在原數(shù)組上操作 (****)

<script>
      //8. 寫一個(gè)函數(shù)filterNumericInPlace,過(guò)濾數(shù)組中的數(shù)字,刪除非數(shù)字。要求在原數(shù)組上操作 (****)
      arr8 = ["a", "b", 1, 3, 4, 5, "b", 2];
      filterNumericInPlace(arr8);
      console.log(arr8);

      function filterNumericInPlace(arr) {
        for(var i = 0; i < arr.length; i++) {
          if(typeof arr[i] !== "number") {
            arr.splice(i,1);
            i--;
          }
        }
      }
</script>
代碼8

9. 寫一個(gè)ageSort函數(shù)實(shí)現(xiàn)數(shù)組中對(duì)象按age從小到大排序 (***)

<script>
      //9. 寫一個(gè)ageSort函數(shù)實(shí)現(xiàn)數(shù)組中對(duì)象按age從小到大排序 (***)
      var john = {
        name: "John Smith",
        age: 23
      };
      var mary = {
        name: "Mary Key",
        age: 18
      };
      var bob = {
        name: "Bob-small",
        age: 6
      };
      var people = [john, mary, bob ];
      ageSort(people);
      console.log(people);

      function ageSort(arr) {
        arr.sort(function(a, b) {
          return a.age - b.age;
        })
      }
</script>
代碼9

10. 寫一個(gè)filter(arr, func) 函數(shù)用于過(guò)濾數(shù)組,接受兩個(gè)參數(shù),第一個(gè)是要處理的數(shù)組,第二個(gè)參數(shù)是回調(diào)函數(shù)(回調(diào)函數(shù)遍歷接受每一個(gè)數(shù)組元素,當(dāng)函數(shù)返回true時(shí)保留該元素,否則刪除該元素)。實(shí)現(xiàn)如下功能: (****)

<script>
      //10. 寫一個(gè)filter(arr, func) 函數(shù)用于過(guò)濾數(shù)組,接受兩個(gè)參數(shù),第一個(gè)是要處理的數(shù)組,第二個(gè)參數(shù)是回調(diào)函數(shù)(回調(diào)函數(shù)遍歷接受每一個(gè)數(shù)組元素,當(dāng)函數(shù)返回true時(shí)保留該元素,否則刪除該元素)。實(shí)現(xiàn)如下功能: (****)
      function isNumeric(el) {
        return typeof el === 'number';
      }
      var arr10 = ["a", "b", 3, 4, true, -1, 2, "b"];

      console.log(arr10 = filter(arr10, isNumeric));
      console.log(arr10 = filter(arr10, function(val) {
        return typeof val === "number" && val > 0
      }));

      function filter(arr, fn) {
        for(var i = 0; i < arr.length; i++) {
          if(!fn(arr[i])) {
            arr.splice(i,1);
            i--;
          }
        }
      return arr;
      }
</script>
代碼10

字符串

11. 寫一個(gè) ucFirst函數(shù),返回第一個(gè)字母為大寫的字符 (***)

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>task-18-string</title>
  </head>
  <body>
    <script>
      //1. 寫一個(gè) ucFirst函數(shù),返回第一個(gè)字母為大寫的字符 (***)
      console.log(ucFirst("hunger"));

      function ucFirst(str) {
        return str.replace(str[0], str.substr(0, 1).toUpperCase());
      }

    </script>
  </body>
</html>
代碼11

12. 寫一個(gè)函數(shù)truncate(str, maxlength), 如果str的長(zhǎng)度大于maxlength,會(huì)把str截?cái)嗟絤axlength長(zhǎng),并加上...,如 (****)

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>task-18-string</title>
  </head>
  <body>
    <script>

          //2. 寫一個(gè)函數(shù)truncate(str, maxlength), 如果str的長(zhǎng)度大于maxlength,會(huì)把str截?cái)嗟絤axlength長(zhǎng),并加上...,如 (****)
          console.log(truncate("hello, this is hunger valley,", 10));
          console.log(truncate("hello world", 20));

          function truncate(str, maxlength) {
            var newstr = "";
            if(str.length > maxlength) {
              newstr = str.substr(0, maxlength) + "...";
            } else {
              newstr = str;
            }
            return newstr;
          }

    </script>
  </body>
</html>
代碼12

數(shù)學(xué)函數(shù)

13. 寫一個(gè)函數(shù),獲取從min到max之間的隨機(jī)整數(shù),包括min不包括max (***)

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <script>
    // 1. 寫一個(gè)函數(shù),獲取從min到max之間的隨機(jī)整數(shù),包括min不包括max (***)

    function getRandomInt(min, max) {
      return Math.floor(Math.random() * (max - min)) + min;
    }
    for(var i = 0; i < 10; i++) {
    console.log(getRandomInt(4,7));
    }
    
    </script>
  </body>
</html>
代碼13

14. 寫一個(gè)函數(shù),獲取從min都max之間的隨機(jī)整數(shù),包括min包括max (***)

<script>
    function getRandomInt_2(min, max) {
      return Math.floor(Math.random() * (max - min + 1)) + min;
    }
    for(var i = 0; i < 10; i++) {
      console.log(getRandomInt_2(4,7));
    }
</script>
代碼14

15. 寫一個(gè)函數(shù),獲取一個(gè)隨機(jī)數(shù)組,數(shù)組中元素為長(zhǎng)度為len,最小值為min,最大值為max(包括)的隨機(jī)整數(shù) (***)

<script>
    function randomArr(len, min, max) {
      var arr = [];
      for(var i = 0; i < len; i++) {
        arr[i] = Math.floor(Math.random() * (max - min +1)) + min;
      }
      return arr;
    }

    console.log(randomArr(5, 2, 6));
    
    </script>
代碼15

16. 寫一個(gè)函數(shù),生成一個(gè)長(zhǎng)度為 n 的隨機(jī)字符串,字符串字符的取值范圍包括0到9,a到 z,A到Z。

<script>
    //4. 寫一個(gè)函數(shù),生成一個(gè)長(zhǎng)度為 n 的隨機(jī)字符串,字符串字符的取值范圍包括0到9,a到 z,A到Z。

    function getRandStr(len) {
      var str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
          newstr = "";
      for(var i = 0; i < len; i++) {
        newstr += str[Math.floor(Math.random() * str.length)];
      }
      return newstr;
    }

    var str = getRandStr(10);
    console.log(str);

    </script>
代碼16

代碼地址代碼


本文歸本人和饑人谷所有,轉(zhuǎn)載請(qǐng)注明來(lái)源,謝謝

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容