Array Iteration Methods

 

一、array.forEach(function(value, index, array))

var numbers = [45, 4, 9];
numbers.forEach(myFunction);

function myFunction(value, index, array) {
    console.log(value);
    console.log(index);
    console.log(array);
}

其結果為

說明:

由上例可知 array.forEach() 方法其 argument 是裝著函式,

而函式的 parameters 則有三種可以讓開發者來操作,分別是 value、index、array。

另外 array.forEach() 方法並不回傳值。

 

二、Array array.map(function(value, index, array))

var numbers = [1, 2, 3];
console.log(numbers.map(myFunction));

function myFunction(value, index, array) {
    return index * value;
}

其結果為

說明:

array.map(function(value, index, array)) 會將陣列裡的每一個元素做處理後,再對映到一陣列的原始索引值裡去。

 

三、Array array.filter(function(value, index, array))

var numbers = [1, 2, 3];
console.log(numbers.filter(myFunction));

function myFunction(value, index, array) {
    return value > 1;
}

其結果為

說明:

array.filter() 會將陣列裡的每一個元素做判斷,條件成立才會回傳,

最後回傳陣列裡的元素都是條件成立者。

 

四、int array.reduce(function(total, value, index, array),[inital])

var numbers = [10, 20, 30, 40];
console.log(numbers.reduce(myFunction));

function myFunction(total, value, index, array) {
    console.log(total, value, index, array);
    return total + value;
}

其結果為

說明:

total 這個參數有兩個意思,一個初始值,二是上一個回傳值,

這個範例是利用 array.reduce() 方法來作一個陣列的加總。

 

另外,array.reduce() 方法也可外加初始值

var numbers = [10, 20, 30, 40];
console.log(numbers.reduce(myFunction, 100));

function myFunction(total, value, index, array) {
    console.log(total, value, index, array);
    return total + value;
}

其結果為

 

五、int array.reduceRight(function(total, value, index, array),[inital])

var numbers = [10, 20, 30, 40];
console.log(numbers.reduceRight(myFunction));

function myFunction(total, value, index, array) {
    console.log(total, value, index, array);
    return total + value;
}

其結果為

說明:

這用途跟 array.reduce() 方法是一樣的,只差在陣列元素是從右到左佚代,

array.reduceRight() 方法也支援外加初始值。

 

六、bool array.every(function(value, index, array))

用來判斷陣列裡所有元素是否全都符合條件才回傳為 true。邏輯為 AND。

var numbers = [11, 20, 3];
console.log(numbers.every(myFunction));

function myFunction(value, index, array) {
    return value > 10;
}

其結果為

 

七、bool array.some(function(value, index, array))

只要陣列裡部份元素符合條件就回傳為 true。邏輯為 OR。

var numbers = [1, 2, 3, 4];
console.log(numbers.some(myFunction));

function myFunction(value, index, array) {
    return value > 3;
}

其結果為

 

八、int array.indexOf(object item[, int startIndex])

在一陣列裡找尋第一次出現某物件的索引值,回傳 -1 表示找不到。

var person = ["Tom", "Bob", "Mary"];
console.log(person.indexOf("Bob"));

其結果為

 

也可以從指定位置開始找起

var person = [1, 2, 3, 1, 5];
console.log(person.indexOf(1, 3));

其結果為

 

九、int array.lastIndexOf(object item[, int startIndex])

在一陣列裡找尋最後一次出現某物件的索引值。

var person = [1, 2, 3, 1, 1];
console.log(person.lastIndexOf(1));

其結果為

 

十、object array.find(function(value, index, array))

用來找出第一次符合條件的元素。

var numbers = [4, 9, 16, 25, 29];
console.log(numbers.find(myFunction));

function myFunction(value, index, array) {
    return value > 18;
}

其結果為

 

十一、object array.findIndex(function(value, index, array))

用來找出第一次符合條件元素的索引值。

var numbers = [4, 9, 16, 25, 29];
console.log(numbers.findIndex(myFunction));

function myFunction(value, index, array) {
    return value > 18;
}

其結果為