🙂
JavaScript - 程式設計
  • JavaScript - 程式設計
  • 1. 簡介
    • 1.1 講者簡介
    • 1.2 課程簡介
    • 1.3 開發工具簡介
    • 1.4 第一個 JavaScript
  • 2. 網站技術簡介
    • 2.1 網站前端技術
    • 2.2 網站後端技術
    • 2.3 JavaScript 簡介
  • 3. JavaScript程式語言
    • 3.1 套用 JavaScript
    • 3.2 註解(Comment)
    • 3.3 變數(Variable)
    • 3.4 資料型態(Data Types)
    • 3.5 Strict 模式
    • 3.6 運算子(Operator)
    • 3.7 字串(String)
    • 3.8 數值(Number)
    • 3.9 陣列(Array)
    • 3.10 物件(Object)
    • 3.11 條件式(Conditional)
    • 3.12 迴圈(Loop)
    • 3.13 函式(Function)
    • 3.14 類別(Class)
    • 3.15 傳值呼叫、傳址呼叫
    • 3.16 變數可視範圍(scope)
    • 3.17 錯誤補捉(Errors)
    • 3.18 資料格式
  • 4. JavaScript常用函式及主題
    • 4.1 JSON
    • 4.2 時間間隔執行
    • 4.3 數學(Math)
    • 4.4 日期時間(Date)
    • 4.5 陣列迭代(Iteration)
    • 4.6 陣列排序(Sort)
    • 4.7 正規表達式(Regular Expression)
    • 4.8 效能測試
    • 4.9 this 關鍵字
  • 5. 參考資料
Powered by GitBook
On this page
  • Array.forEach()
  • Array.map()
  • Array.filter()
  • Array.every()
  • Array.some()
  • Array.indexOf()
  • Array.lastIndexOf()
  • Array.find()
  • Array.findIndex()
  1. 4. JavaScript常用函式及主題

4.5 陣列迭代(Iteration)

在 javascript/practice 資料夾下,建立 array_iteration.html 檔案,以便練習。

以下各迭代範例,同學都需要實際執行過並且會解讀。

Array.forEach()

陣列的每個項目,都依序地跑過執行指定的程式:

  • value:陣列的值。

  • index:陣列索引,從 0 開始。

var numbers = [45, 4, 9, 16, 25];
numbers.forEach(function(value, index){ // 參數若沒有用到,可以省略不寫
  console.log(value);
});

Array.map()

陣列裡的每個項目,都執行特定程式,要有回傳值(return),然後會產生新的陣列,原陣列並不會被影響。例:

var numbers = [45, 4, 9, 16, 25];
var numbers2 = numbers.map(function(value, index){
  return value * 2;
});

console.log(numbers); // [45, 4, 9, 16, 25]
console.log(numbers2); // [90, 8, 18, 32, 50]

如果不靠內建的 map() 函式,自己寫邏輯的話,例:

var numbers = [45, 4, 9, 16, 25];
var new_numbers = [];
for(let i = 0; i < numbers.length; i++){
  new_numbers.push( numbers[i] * 2 );
}

console.log(new_numbers);

Array.filter()

按照指定的過濾條件,回傳新的陣列,不會影響原來的陣列。例:

var numbers = [
  {
    id: 1,
    num: 45
  },
  {
    id: 2,
    num: 4
  },
  {
    id: 3,
    num: 9
  },
  {
    id: 4,
    num: 16
  },
  {
    id: 5,
    num: 25
  }
];

var over18 = numbers.filter(function(item, index){
  return item.num > 18;
});

console.log(numbers);
console.log(over18); // [{id: 1, num: 45}, {id: 5, num: 25}]

Array.every()

依序跑過每個陣列項目,如果陣列裡的每一項,都符合指定的條件,那就回傳 true;反之,只要有一個不符合,就回傳 false。例:

var numbers = [
  {
    id: 1,
    num: 45
  },
  {
    id: 2,
    num: 4
  },
  {
    id: 3,
    num: 9
  },
  {
    id: 4,
    num: 16
  },
  {
    id: 5,
    num: 25
  }
];

var all_over18 = numbers.every(function(item, index){
  return item.num > 18;
});

console.log(all_over18); // false

Array.some()

依序跑過每個陣列項目,如果陣列裡的每一項,只要有一項符合指定的條件,那就回傳 true;反之,如果都不符合,就回傳 false。例:

var numbers = [
  {
    id: 1,
    num: 45
  },
  {
    id: 2,
    num: 4
  },
  {
    id: 3,
    num: 9
  },
  {
    id: 4,
    num: 16
  },
  {
    id: 5,
    num: 25
  }
];

var all_over18 = numbers.some(function(item, index){
  return item.num > 18;
});

console.log(all_over18); // true

Array.indexOf()

在陣列中找一個元素,找到第一個出現的位置:

var fruits = ["Apple", "Orange", "Apple", "Mango"];
var position = fruits.indexOf("Apple");

console.log("索引位置:" + position); // 索引位置:0

Array.lastIndexOf()

在陣列中找一個元素,從後面開始找,找到第一個出現的位置:

var fruits = ["Apple", "Orange", "Apple", "Mango"];
var position = fruits.lastIndexOf("Apple");

console.log("索引位置:" + position); // 索引位置:2

Array.find()

回傳第一個找到符合條件的那項:

var numbers = [
  {
    id: 1,
    num: 45
  },
  {
    id: 2,
    num: 4
  },
  {
    id: 3,
    num: 9
  },
  {
    id: 4,
    num: 16
  },
  {
    id: 5,
    num: 25
  }
];

var first = numbers.find(function(item, index){
  return item.num > 18;
});

console.log(first); // {id: 1, num: 45}

Array.findIndex()

回傳第一個找到符合條件的那項的索引值:

var numbers = [
  {
    id: 1,
    num: 45
  },
  {
    id: 2,
    num: 4
  },
  {
    id: 3,
    num: 9
  },
  {
    id: 4,
    num: 16
  },
  {
    id: 5,
    num: 25
  }
];

var first = numbers.findIndex(function(item, index){
  return item.num > 18;
});

console.log(first); // 0
Previous4.4 日期時間(Date)Next4.6 陣列排序(Sort)

Last updated 3 years ago