map() forEach() some() every() filter() find() findIndex() slice() splice() split()
目錄
計算下列方法單獨執行返回的值和原數組 nums 的值:
var nums = [1, 2, 3]
nums.map(x => x + 1) // [2, 3, 4]
nums.filter(x => x !== 2) // [1, 3]
nums.find(x => x !== 3) // 1
nums.findIndex(x => x > 2) // 2
nums.slice(1, 2) // [2]
nums.splice(1, 2, 1) // [2, 3]
map() 方法
map() 方法返回一個新數組,數組中的元素爲原始數組元素調用函數處理後的值。
map() 方法按照原始數組元素順序依次處理元素。
- map() 不會對空數組進行檢測
- map() 不會改變原始數組
nums.map(x => x + 1)
var nums = [1, 2, 3]
console.log(nums.map(x => x + 1)) // [2, 3, 4]
console.log(nums); // [1, 2, 3]
延伸 forEach() 方法
forEach() 方法用於調用數組的每個元素,並將元素傳遞給回調函數。
- forEach() 對於空數組不會執行回調函數
- 與map() 相同的是:都可以來遍歷數組;
- 與map()不同的是:forEach() 方法沒有返回值,不會反返回新數組
延伸 some() 方法
some() 方法用於檢測數組中的元素是否有滿足
指定條件(函數提供)。
some() 方法會依次執行數組的每個元素:
- 如果有一個元素滿足條件,則表達式返回true , 剩餘的元素不會再執行檢測。
- 如果沒有滿足條件的元素,則返回false。
- 注意: some() 不會對空數組進行檢測。
- 注意: some() 不會改變原始數組。
var ages = [3, 10, 18, 20];
function checkAdult(age) {
return age >= 18;
}
function myFunction() {
console.log(ages.some(checkAdult)); // true
}
延伸 every() 方法
every() 方法用於檢測數組所有元素是否都符合
指定條件(通過函數提供)。
every() 方法使用指定函數檢測數組中的所有元素:
- 如果數組中檢測到有一個元素不滿足,則整個表達式返回 false ,且剩餘的元素不會再進行檢測。
- 如果所有元素都滿足條件,則返回 true。
- 注意: every() 不會對空數組進行檢測。
- 注意: every() 不會改變原始數組。
var ages = [32, 33, 16, 40];
function checkAdult(age) {
return age >= 18;
}
function myFunction() {
console.log(ages.every(checkAdult)); // false
}
filter() 方法
filter() 方法創建一個新的數組,新數組中的元素是通過檢查指定數組中符合條件的所有元素。
- filter() 不會對空數組進行檢測
- filter() 不會改變原始數組
// nums.filter(x => x !== 2)
var nums = [1,2,3]
console.log(nums.filter(x => x !== 2)) // [1, 3]
console.log(nums); // [1, 2, 3]
find() 方法
find() 方法返回通過測試(函數內判斷)的數組的第一個元素的值。
-
find() 對於空數組,函數是不會執行的。
-
find() 並沒有改變數組的原始值。
// nums.find(x => x !== 3)
var nums = [1,2,3]
nums.find(x => x !== 3) // 1
console.log(nums); // [1, 2, 3]
findIndex() 方法
findIndex() 方法返回傳入一個測試條件(函數)符合條件的數組第一個元素位置。
- 當數組中的元素在測試條件時返回 true 時, findIndex() 返回符合條件的元素的索引位置,之後的值不會再調用執行函數。
- 如果沒有符合條件的元素返回 -1
- findIndex() 對於空數組,函數是不會執行的。
- findIndex() 並沒有改變數組的原始值。
// nums.findIndex(x => x > 2)
var nums = [1,2,3];
console.log(nums.findIndex(x => x > 2)) // 2
slice() 方法
slice(start, end) 方法可提取字符串的某個部分,並以新的字符串返回被提取的部分。
使用 start(包含) 和 end(不包含) 參數來指定字符串提取的部分 。
- 如果是負數,則該參數規定的是從字符串尾部開始算起的位置。也就是說:-1指字符串最後一個字符,-2指倒數第二個字符。
// nums.slice(1, 2)
var nums = [1,2,3]
console.log(nums.slice(1, 2)); // [2]
console.log(nums); // [1, 2, 3]
splice() 方法
splice() 方法用於添加或刪除數組中的元素。返回刪除的元素數組。
- splice() 方法會改變原始數組。
array.splice(index,howmany,item1,.....,itemX)
// index: 必須&&數組、從索引index開始添加/刪除元素
// howhany:可選||必須數字、刪除多少元素,爲0時不刪除;未規定時刪除從index開始到數組結尾的所有元素
// item:可選、要添加到數組的新元素。
// nums.splice(1, 2, 1)
// 返回刪除的數組 從index爲1開始刪除2個元素
var nums = [1,2,3];
console.log(nums.splice(1, 2, 1)) // [2, 3]
console.log(nums); // [1, 1]
延伸 split() 方法
split() 方法用於把一個字符串分割成字符串數組。
var str="How are you doing today?"
console.log(str.split(" ")) // ["How", "are", "you", "doing", "today?"]
console.log(str.split("")) // ["H", "o", "w", " ", "a", "r", "e", " ", "y", "o", "u", " ", "d", "o", "i", "n", "g", " ", "t", "o", "d", "a", "y", "?"]
console.log(str.split(" ",3)) // ["How", "are", "you"]