篩選
對每個元素執行布林函數,並僅將通過的元素放入輸出。
您可以使用此函數僅保留您想要處理的輸入項目。例如
ruby…
[1,2,3,4].select {|i| i.even?} # => [2, 4]
clojure…
(filter even? [1 2 3 4]) ;; => (2 4)
許多語言使用術語「select」表示此操作。「select」字眼的優點是「reject」形成一個自然的補語。
ruby…[1,2,3,4].select {|i| i.even?} # => [2, 4] [1,2,3,4].reject {|i| i.even?} # => [1, 3]
「remove」有時用於「reject」,其中語言使用「filter」。
使用「select」作為名稱最大的缺點是,有些程式庫(例如 dot net 的 Linq)使用「select」作為 map 的名稱(根據 SQL 的用法,其中「select」會對欄位子集進行投影,這是 map 的一種特殊形式)。
與許多操作一樣,過濾雜湊會涉及一些難題。將單一參數解構為鍵和值對於支援它的語言(例如 Clojure)來說很有效。
clojure…(filter (fn [[k,v]] (> v 2)) {:BR 5, :IT 4, :ES 1} ) ;; => ([:IT 4] [:BR 5])
OO 語言需要在雜湊類別上定義一個篩選操作 - ruby 使用 select 來執行此操作。
ruby…{BR: 5, IT: 4, ES: 1}.select{|k,v| v > 2} # => {:BR=>5, :IT=>4}