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(["頭", "條", "新", "浪", "潮"]);
//依次延時列印結果 "頭"  "條"  "新"  "浪"  "潮"

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/259104.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-15 16:30
下一篇 2024-12-15 16:30

相關推薦

發表回復

登錄後才能評論