<menu id="ycqsw"></menu><nav id="ycqsw"><code id="ycqsw"></code></nav>
<dd id="ycqsw"><menu id="ycqsw"></menu></dd>
  • <nav id="ycqsw"></nav>
    <menu id="ycqsw"><strong id="ycqsw"></strong></menu>
    <xmp id="ycqsw"><nav id="ycqsw"></nav>
  • js數組遍歷方法(js數組替換指定元素)


    常見使用的遍歷函數

    使用for-of循環(ES2015+) – 異步友好

    使用forEach/some – 異步不友好(見例子)

    使用for – 異步友好


    幾點注意

    不使用map,除非你用不到循環的返回值,請注意map和forEach是有區別的,map主要用來生成一個新的數組。

    異步謹慎使用forEach,如果回調做異步工作,需要forEach等待(但是forEach不會等待,而是直接到底)。


    數組遍歷例子

    for-of (ES2015+)

    用法簡單直接,使用let把單個變量的范圍進行限制,不會影響到循環外,而且性能優于forEach,建議遍歷數組使用該函數。

    const a = ["a", "b", "c"];
    for (let val of a) {
        console.log(val);
    }
    //依次打印結果 "a", "b", "c"
    JavaScript-遍歷數組的方法有哪些?

    同時也對異步處理十分友好。

    //延時
    function delay(ms) {
      return new Promise((resolve) => {
        setTimeout(resolve, ms);
      });
    }
    
    //異步函數打印數組內容
    async function show(arr) {
      for (let item of arr) {
        await delay(400); //等待 forEach 則會無視 await
        console.log(item);
      }
    }
    
    show(["頭", "條", "新", "浪", "潮"]);
    //依次延時打印結果 "頭"  "條"  "新"  "浪"  "潮"
    JavaScript-遍歷數組的方法有哪些?

    forEach (ES5)

    處理同步代碼(不需要等待),則可以使用forEach用于在循環期間完成的異步進程。

    const a = ["a", "b", "c"];
    a.forEach((val) => {
        console.log(val);
    });
    //依次打印結果 "a", "b", "c"

    異步處理例子,注意與for-of的差異,將會并發運行,等同于多個子函數同步運行。

    //延時
    function delay(ms) {
      return new Promise((resolve) => {
        setTimeout(resolve, ms);
      });
    }
    
    //異步函數打印數組內容
    async function show(arr) {
      arr.forEach(async (item) => {
        await delay(400);
        console.log(item);
      });
    }
    
    show(["頭", "條", "新", "浪", "潮"]);
    //延時完成后,直接打印 "頭"  "條"  "新"  "浪"  "潮"
    JavaScript-遍歷數組的方法有哪些?

    for

    const a = ["a", "b", "c"];
    for (let i = 0; i < a.length; ++i) {
      console.log(a[i]);
    }
    //依次打印結果 "a", "b", "c"
    
    //性能優化版
    const a = ["a", "b", "c"];
    for (let i = 0, length = a.length; i < length; ++i) {
      console.log(a[i]);
    }

    異步處理例子

    //延時
    function delay(ms) {
      return new Promise((resolve) => {
        setTimeout(resolve, ms);
      });
    }
    
    //異步函數打印數組內容
    async function show(arr) {
      for (let i = 0, length = arr.length; i < length; ++i) {
        await delay(400);
        console.log(arr[i]);
      }
    }
    
    show(["頭", "條", "新", "浪", "潮"]);
    //依次延時打印結果 "頭"  "條"  "新"  "浪"  "潮"

    版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。

    發表評論

    登錄后才能評論
    国产精品区一区二区免费