篩選方法- map( ), filter( ), find( ), some( )


Posted by mijouhsieh on 2023-03-29

JavaScript 中篩選陣列的資料內容
map() filter() find() some() => 不改變原陣列


reference: Best Methods to Check if the Elements of the Array Satisfy a Given Condition

map() return 新陣列

return 新陣列 不改變原陣列
因為 map 會建立新的陣列,如果在不想建立新陣列時使用該方法,就會變成反模式(anti-pattern):這種情況下,要使用 forEach 或 for-of (en-US)。

以下情況不應該使用 map:

  • 不使用回傳的新陣列,
  • 或/且不需要回傳新陣列。
const array1 = [1, 4, 9, 16];
// Pass a function to map
const map1 = array1.map(x => x * 2);
console.log(map1) // Expected output: Array [2, 8, 18, 32]

filter(參數為條件函式) return 新陣列

return 新陣列 不改變原陣列
JS內建的filter方法,只有通過這個條件函式檢查的項目,才會被filter保留並回傳一個 新的陣列

let numbers = [1, 2, 3, 4, 5, 6]
let newNumbers = numbers.filter(number => number < 3)
console.log(newNumbers) // [1,2]
const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
const result = words.filter(word => word.length < 3);
console.log(result) // []

find(參數為條件函式) return 第一個符合條件的項目

find找到第一個符合條件的項目,函式馬上終止並回傳該項目,後面的項目都不再看。
return 第一個符合條件的項目 不改變原陣列

let numbers = [1, 2, 3, 4, 5, 6]
let newNumber = numbers.find((number) => number > 2) //3
let newNumber = numbers.find((number) => number > 6) //undefined

some(參數為條件函式) return Boolean

some方法和find類似,不過some只會回報「陣列裡有沒有item通過檢查條件」,有的話回傳true,到最後都沒有就回傳false。
return Boolean 不改變原陣列

let numbers = [1, 2, 3, 4, 5, 6]
let newNumber = numbers.some((number) => number === 3)
console.log(newNumber) //true
method 回傳
filter() 多個符合條件的元素
find() 第一個符合條件的元素
some() 符合條件的元素=>true

#array method 篩選 #map() #filter() #find() #some()







Related Posts

Day 2 - Data Type & Calculate

Day 2 - Data Type & Calculate

D3v4 工作坊 - React + D3 繪製 svg 動態路線地圖

D3v4 工作坊 - React + D3 繪製 svg 動態路線地圖

VUE3 課前章節-JS 必備觀念-ES6縮寫

VUE3 課前章節-JS 必備觀念-ES6縮寫


Comments