內容來自廖雪峯大神官網:https://www.liaoxuefeng.com/wiki/1022910821149312/1278025786193984
對於數組,除了map()
、reduce
、filter()
、sort()
這些方法可以傳入一個函數外,Array
對象還提供了很多非常實用的高階函數。
every
every()
方法可以判斷數組的所有元素是否滿足測試條件。
例如,給定一個包含若干字符串的數組,判斷所有字符串是否滿足指定的測試條件:
'use strict';
var arr = ['Apple', 'pear', 'orange'];
console.log(arr.every(function (s) {
return s.length > 0;
})); // true, 因爲每個元素都滿足s.length>0
console.log(arr.every(function (s) {
return s.toLowerCase() === s;
})); // false, 因爲不是每個元素都全部是小寫
find
find()
方法用於查找符合條件的第一個元素,如果找到了,返回這個元素,否則,返回undefined
:
'use strict';
var arr = ['Apple', 'pear', 'orange'];
console.log(arr.find(function (s) {
return s.toLowerCase() === s;
})); // 'pear', 因爲pear全部是小寫
console.log(arr.find(function (s) {
return s.toUpperCase() === s;
})); // undefined, 因爲沒有全部是大寫的元素
findIndex
findIndex()
和find()
類似,也是查找符合條件的第一個元素,不同之處在於findIndex()
會返回這個元素的索引,如果沒有找到,返回-1
:
'use strict';
var arr = ['Apple', 'pear', 'orange'];
console.log(arr.findIndex(function (s) {
return s.toLowerCase() === s;
})); // 1, 因爲'pear'的索引是1
console.log(arr.findIndex(function (s) {
return s.toUpperCase() === s;
})); // -1
forEach
forEach()
和map()
類似,它也把每個元素依次作用於傳入的函數,但不會返回新的數組。forEach()
常用於遍歷數組,因此,傳入的函數不需要返回值:
'use strict';
var arr = ['Apple', 'pear', 'orange'];
arr.forEach(console.log); // 依次打印每個元素