2016-03-25 13 views
0

私がGoogleを検索したときに表示される結果。 find()はもう存在しません。Swiftでは、値が配列内にあるかどうかを確認し、配列から値を取得できますか?

のでスウィフト2.0で交換find()はありますか?それがうまくいくかどうかは分かりません。

私だけではなく、そのインデックス番号、いくつかの基本的な「配列から値を取得する」ものを探しています。配列内の特定の文字列を検索して、配列内にあるかどうかを調べる。

+0

私は他の質問だけを求めているとして、それは、重複だとは思わない「の値が配列である場合に見て - boolean型の戻り」と私は、「どのように尋ねますそれを見て、それを配列から取得する - 値の戻り値 "。しかし、あなたが質問の本文を読んでおらず、タイトルだけを読んでいたなら、あなたはそれがそうであると見なすことができます。 –

+0

前回の編集後に質問を読み返していますが、あなたが探していることがわかりません。文字列をすでに知っている場合、配列からどのような値を求めますか?関連する価値? – Shades

+0

あなたがしようとしていることを示しているコードを載せてください(たとえそれがうまくなくても)。そしてあなたが得たい値 – Shades

答えて

1

まあ、私は昨日から、私はあなたが尋ねたし、数時間のために困惑していなかったうれしいです。

一方向は.contains()です。

値がブール値(trueまたはfalse)を返すことによって、アレイに存在する場合、これはあなたを伝えることができます。

もう一つの方法は、配列に値があるかどうかが、あなたが望むように、アレイのうちの特定の値を取得するには、.indexOf()を使用することです。検索配列に値がない場合、または問題の値のインデックス番号を返します場合

これはnilを返します。それをチェックしたいだけなら、が道ですが、あなたが値を絶対に望むなら、インデックス番号を取得したら値を得るのはちょっとしたステップです。


それでは、私たちはそうのような配列を持っているとしましょう:

var fruitArray: [String] = ["Apple", "Banana", "Kiwi"] 

私たちは、「Appleは」文字列に表示される値かどうかをテストできます。 .contains()はドット表記法を使用します。ドット表記法では、探している値をあとにかっこで囲みます。

fruitArray.contains("Apple") 

そして.indexOf()そうのように、同じように動作します:

fruitArray.indexOf("Apple") 

だから我々は単に「値が配列である場合、」のような単純な何かをするための真/偽の応答を取得したい場合は、我々は、例えば、それを印刷しようとした場合、我々は唯一のを取得します - これは私たちが実際にかかわらず、値自体を取得することはできません。もちろん、

var fruitArray: [String] = ["Apple", "Banana", "Kiwi"] 

fruitArray.contains("Apple") //returns true 

:我々は.contains()を使用することができますまたはfalse

var fruitArray: [String] = ["Apple", "Banana", "Kiwi"] 

print (fruitArray.contains("Apple")) 

//prints true 

ここでは.indexOf()が便利です。 indexOf()では、真/偽のブール値ではなく、配列のインデックス番号を返します。あなたが受け取った配列のインデックス番号であなたが好きなことをすることができます。その価値を示すように。

var fruitArray: [String] = ["Apple", "Banana", "Kiwi"] 

if let fruitIndex = fruitArray.indexOf("Banana") { 
    print(fruitArray[fruitIndex]) 
} 

//prints ‘Banana’ 

それとも、我々は同じ値のための2つの異なるアレイを検索する.contains()を使用することができ、このような何かを、行うことができます:

array[index number]を使用して - 私たちは、他の配列の場合と同じようにそれを行うことができます
var fruitArray: [String] = ["Apple", "Banana", "Kiwi"] 

var berryArray: [String] = ["Blueberry", "Strawberry", "Banana"] 

var sneakyFruit = "Banana" 

if fruitArray.contains(sneakyFruit) && berryArray.contains(sneakyFruit) { 
    print(sneakyFruit) 
} 
//prints ‘Banana’ 

入力された値が配列である場合は、チェックするために、この簡単なもののように、関数内で.contains()を使用することができます。

func fruitExists (name: String) -> Bool { 
    return fruitArray.contains(name) 
} 

fruitExists("Kiwi")  //‘true’ 
fruitExists("Rhubarb")  //‘false’ 

または米国

func shopListEdit (name: String) { 
    if fruitArray.contains(name) { 
     let fruitIndex = fruitArray.indexOf(name) 
     fruitArray[fruitIndex!] = ("\(name) and Custard") 
    } 
} 

shopListEdit("Banana") 
fruitArray     //["Apple", "Banana and Custard", "Kiwi"] 
shopListEdit("Rhubarb")  
fruitArray     //["Apple", "Banana and Custard", "Kiwi"] 

がありますが、昨日から、私を行く、辛抱と何の質問が答えに値するには余りにも愚かませんことを覚えておいてください:.contains()値が存在するチェックすると.indexOf()は、それを編集する - の両方を使用して、この1のようにして電子機能。

5

お探しの方法はcontainsです。 indexOfは値が配列内にあるかどうかを教えてくれますが、具体的に何を求めているかはcontainsメソッドです。

例:

let array = ["Lions", "Tigers", "Bears"] 
array.contains("Lions") // true 
array.contains("Oh My") // false 
+0

実際には、「値が配列内にあるかどうかを確認する」と、配列から値を取得することを考えました。私はそれをテストしました。そして、 '.contains()'はそれを行うことはできません。なぜなら、Boolの値を返してくれるからです。質問の第1部分にはぴったりで、単純化するだけですが、私が〜から直接値を取得するために使うことができる何かの方法の戻り値。しかし、質問のパート1への代替のおかげで! –

+2

それから私はその質問を誤解したと思います。しかし、 'contains'を正しく使用している場合は、すでに値があり、配列から取得することは冗長になります。 – Slayter

+0

こんにちは@Slayter、私はちょうどあなたが正しいことを確認したい、既に値を持っている場合、それは配列からの2番目のコピーを取得するために冗長です...私は追加したい、OPはインデックスを使用しています配列を扱う/編集するためには、 "値"(文字列)について話しているかもしれませんが、OP(プログラミングの初心者)はやや異なった意味を持っていました。 –

関連する問題