質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

2回答

1120閲覧

filterの使い方を教えて欲しい

KTH

総合スコア86

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/07/16 09:38

swift

1var foodList = ["<香辛料類>チリパウダー", "<香辛料類>とうがらし粉", "<香辛料類>ナツメグ粉", "<香辛料類>にんにくガーリックパウダー食塩無添加", "<香辛料類>にんにくガーリックパウダー食塩添加", "<香辛料類>にんにくおろし", "<香辛料類>バジル粉", "<香辛料類>パセリ乾", "<香辛料類>パプリカ粉", "<香辛料類>わさび粉からし粉入り", "<香辛料類>わさび練り", "<その他>酵母パン酵母圧搾", "<その他>酵母パン酵母乾燥", "<その他>天ぷら用バッター", "<その他>ベーキングパウダー", "カレービーフレトルトパウチ", "ぎょうざ冷凍", "グラタンえび冷凍", "コーンクリームスープ粉末タイプ", "コーンクリームスープレトルトパウチ", "コロッケクリームタイプフライ用冷凍", "コロッケクリームタイプフライ済み冷凍", "コロッケポテトタイプフライ用冷凍", "コロッケポテトタイプフライ済み冷凍", "(魚フライ類)いかフライフライ用冷凍", "(魚フライ類)いかフライフライ済み冷凍", "(魚フライ類)えびフライフライ用冷凍", "(魚フライ類)えびフライフライ済み冷凍", "(魚フライ類)白身フライフライ用冷凍", "(魚フライ類)白身フライフライ済み冷凍", "シチュービーフレトルトパウチ", "しゅうまい冷凍", "ハンバーグ冷凍", "ピラフ冷凍", "ミートボール冷凍"] 2 3

こういう配列があるときに「無添加」が含まれている配列のindex番号をfilterで取り出したいのですが、どいういふうに書けばよいのですか?

var aa = foodList.filter({$0 == "無添加"})
print(aa)

だと殻になってしまいます

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

既に回答付いておりますが、stackoverflowの回答を参考に記載してみました。
こちらでも同様の結果が得られるかもしれません。

Swift

1// "無添加"で検索した場合 2let aa = foodList.indices.filter{foodList[$0].contains("無添加")} 3print(aa) 4// 出力結果 -> [3] 5 6// "冷凍"で検索した場合 7let aa = foodList.indices.filter{foodList[$0].contains("冷凍")} 8print(aa) 9// 出力結果 -> [16, 17, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34]

・参考リンク
Swift - How to get indexes of filtered items of array

投稿2020/07/16 14:16

tsuki01

総合スコア1751

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

filter()だと要素で比較しますし、この条件だと完全一致になってしまいます。
無添加が「含まれる」のであれば、contains()の方が目的にかなっているのではないでしょうか。

下記の例では複数抜き出せるのがわかるように「冷凍」で検索しています。

Swift

1// 該当する Index を入れる配列 2var index = [Int]() 3for food in foodList.enumerated() { 4 // わかりやすいように「冷凍」で抜き出す 5 if food.element.contains("冷凍") { 6 index.append(food.offset) 7 } 8} 9// 要素の番号を表示 10print(index) 11 12// 要素を表示 13for i in index { 14 print(foodList[i]) 15}

投稿2020/07/16 11:31

TsukubaDepot

総合スコア5086

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問