<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      綠島之北

      好讀書,不求甚解;每有會意,便記下筆記。

      導航

      通過四個例子理解JavaScript拓展運算符

      原文地址:JavaScript & The spread operator

      拓展運算符看起來像什么? 三個點,...
      它能做什么? 拓展運算符允許一個表達式在某個地方展開成為多個元素、變量或參數

      定義看上去毫無樂趣,下面通過幾個例子理解到底什么是拓展運算符。

      初識

      • 1、創建一個數組middle
      • 2、創建第二個數組,包含第一個數組
      • 3、輸出結果
      var middle = [3, 4];
      var arr = [1, 2, middle, 5, 6];
      
      console.log( arr );
      // [1, 2, [3, 4], 5, 6]
      

      上面沒有使用拓展運算符arr在創建的時候把middle插入到arr數組的中間,此時arr數組里面包了一個數組middle

      如果我們的目標是兩個數組,那上面的做法很不錯,但如果我們只想要一個數組呢?

      我們可以通過拓展運算符實現。再提一次,拓展運算符允許數組的元素展開。來看下面的代碼,除了使用了拓展運算符,代碼和上面的沒啥區別:

      var middle = [3, 4];
      var arr = [1, 2, ...middle, 4, 5];
      
      console.log( arr )
      // [1, 2, 3, 4, 5, 6]
      

      還記得剛才讀到的拓展運算符的定義嗎?上面的代碼發揮了拓展運算符的作用,正如你看的,我們創建了數組arr,然后對middle使用了拓展運算符,此時,middle數組并沒有直接插入到arr中,而是被展開了。middle數組中的每一個元素插入到了arr數組中。此時,arr不再是嵌套數組,而是一個從1到6的簡單數組。

      1、Slice

      slice是JavaScript中數組方法,允許我們拷貝數組。同樣,我們可以使用拓展運算符來拷貝數組。

      var arr = ['a', 'b', 'c'];
      var arr2 = [...arr];
      
      console.log(arr2);
      // ['a', 'b', 'c']
      

      瞧,我們成功復制了數組。arr數組中的所有元素都分解成獨立的個體,然后分配到arr2數組中。我們現在可以對arr2進行任意修改,都不會影響到源數組arr

      上述可以工作的原因是arr的值填充到了arr2定義的方括號中。所以,我們是讓arr2的值和arr的值相等,而不是和arr本身相等。下面的不適用拓展運算符的示例更能說明問題。

      如果我們簡單的創建一個數組,然后讓另一個數組和他相等,就像這樣:

      var arr = ['a', 'b', 'c'];
      var arr2 = arr;
      
      console.log(arr2);
      // ['a', 'b', 'c']
      

      現在你可能會說,這也work了,和上面的結果一樣啊。

      然后,這只是看起來一樣,但是本質是完全不同。我們并沒有讓arr2的值和arr中每個值相同,而是直接讓兩個數組相等,這也就意味著任何對arr2的修改都是影響arr

      arr2.push('d');
      
      console.log(arr2);
      // ['a', 'b', 'c', 'd']
      
      console.log(arr);
      // ['a', 'b', 'c', 'd']
      

      正如你親眼所見,即使沒有明確的向源數組arr添加新值,新值d依然會添加到arr中。

      2、Concat

      使用concat()可以連接數組,使用拓展運算符也能實現。首先看看使用concat()是什么樣子:

      var arr = ['a', 'b', 'c'];
      var arr2 = ['d', 'e', 'f'];
      
      arr1 = arr.concat(arr2);
      console.log(arr);
      // ['a', 'b', 'c', 'd', 'e', 'f']
      

      現在,使用拓展運算符:

      var arr = ['a', 'b', 'c'];
      var arr2 = ['d', 'e', 'f'];
      
      arr = [...arr, ...arr2];
      console.log(arr);
      // ['a', 'b', 'c', 'd', 'e', 'f']
      

      結果完全相同,每個數組都分解然后加入到新的數組arr中。

      注:原文評論中有人指出使用拓展運算符連接數組可能并不高效。在測試中,使用拓展運算符要比concat慢一些。對大數組的處理,使用拓展運算符可能并不理想。

      3、Math

      Math函數可以與拓展運算符結合使用,我們以Math.max()為例。

      簡單介紹一下,Math.max()返回一組數字中的最大值。

      Math.max();
      // -Infinity
      
      Math.max(1, 2, 3);
      // 3
      
      Math.max(100, 3, 4);
      // 100
      

      如果沒有拓展運算符,我們也可以借助.apply()通過Math.max()求數組中的最大值:

      var arr = [2, 4, 8, 6, 0];
      
      function max(arr) {
        return Math.max.apply(null, arr);
      }
      
      console.log(max(arr));
      // 8
      

      這是讓人討厭的實現。

      現在,我們來看通過拓展運算符如何實現。代碼更加簡潔:

      var arr = [2, 4, 8, 6, 0];
      var max = Math.max(...arr);
      
      console.log(max);
      // 8
      

      4、String to Array

      將字符串轉成數組有很多種方法,比如slicesplit等,使用拓展運算符會更加簡單:

      var str = "hello";
      var chars = [...str];
      
      console.log(chars); 
      // ['h', 'e',' l',' l', 'o']
      

      很酷吧,拓展運算符會遍歷str中的每個字符,然后分配到chars新數組中。

      posted on 2017-06-05 08:22  綠島之北  閱讀(416)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 蜜桃一区二区三区免费看| 精品 无码 国产观看| 亚洲国产日韩一区三区| 大地资源免费视频观看| 蜜臀久久综合一本av| 欧美亚洲另类制服卡通动漫| 在线看无码的免费网站| 国产av丝袜旗袍无码网站| 欧美激情视频一区二区三区免费| 黄色一级片一区二区三区| 久久综合激情网| 免费观看的av在线播放| 高台县| 亚洲熟妇自偷自拍另亚洲| 亚洲日本欧洲二区精品| 青青国产揄拍视频| 四虎永久免费精品视频| 国产v综合v亚洲欧美大天堂| 人人爽人人爽人人爽| 国产成人无码一区二区三区在线 | 国产女人在线视频| 老子午夜精品无码| 久久夜色噜噜噜亚洲av| 日韩精品中文字幕人妻| 一区二区中文字幕久久| 在线a久青草视频在线观看| 三级黄色片一区二区三区| 国产高清在线男人的天堂| 人妻系列无码专区69影院| 久久久久久久久久久免费精品| 亚洲男人AV天堂午夜在| 福利一区二区在线观看| 国产乱码精品一区二区三上| 天堂mv在线mv免费mv香蕉| 中文字幕日韩人妻一区| 无码免费大香伊蕉在人线国产| 免费国产一级特黄aa大片在线| 麻豆一区二区中文字幕| 久久精品国产成人午夜福利| 成人aⅴ综合视频国产| 亚洲国产成人无码av在线播放|