1. ホーム
  2. ios

[解決済み] 配列からオブジェクトを探す?

2022-04-23 13:51:52

質問

Swiftには、以下のようなものがあります。 _.findWhere をUnderscore.jsに追加しましたか?

型の構造体の配列を持っています。 T を持つ構造体オブジェクトが配列に含まれているかどうかをチェックしたい。 name プロパティが Foo .

を使おうとしました。 find()filter() が、これらはプリミティブな型でしか動作しないので、例えば String または Int . に適合していないというエラーを投げます。 Equitable プロトコルのようなものです。

解決方法は?

FWIW、カスタム関数やエクステンションを使いたくない場合は

let array = [ .... ]
if let found = find(array.map({ $0.name }), "Foo") {
    let obj = array[found]
}

これは name の配列が最初にあり、次に find をそこから取得します。

もし、巨大な配列がある場合は、このようにするとよいでしょう。

if let found = find(lazy(array).map({ $0.name }), "Foo") {
    let obj = array[found]
}

とか、あるいは

if let found = find(lazy(array).map({ $0.name == "Foo" }), true) {
    let obj = array[found]
}