2016-07-07 5 views
0

私は線形検索のためにコーヒースクリプトを書こうとしていましたが、最後の行の値に加えて値を返さなければならないところに止まっていました。コーヒースクリプトを使った線形検索

Linear_Search = (array, desired) -> 
    for x in array 
     do -> 
      if x is desired 
       return true 
    false 

array = [2, 4, 6, 7, 3, 1, 5] 

if Linear_Search(array, 4) 
    console.log("Found") 
else 
    console.log("Not Found") 

if Linear_Search(array, 9) 
    console.log("Found") 
else 
    console.log("Not Found") 

私は であることを答えました。このスクリプトを実行した後 は

私はreturnキーワードを削除するなど、さまざまなものを試してみました「が見つかりませんでした」「見つかりません」: は、ここに私のコードスニペットです。しかし、彼らは働いていないようです。このすばらしい技術を学ぶために私を助けてください。

Compile Online

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf –

+0

私は実際に助けを探していましたが、ありがとうcoffeescriptで – jainaman224

+0

javascript *は* coffeescriptです。その方法は、両方で同じように機能します。 –

答えて

1

あなたの機能は欠陥がある

Linear_Search = (array, desired) -> 
    for x in array 
     do -> 
      if x is desired 
       return true 
    false 

は次のようになります。

Linear_Search = (array, desired) -> 
    for x in array 
     found = do (x) -> 
      x is desired 

     return true if found 

    false 

do内部機能(クロージャ)を作成し、その応答は、あなたの関数では考慮されていません。私はそれがこのケースで機能を強化しているかどうかはわかりません(私はそれが間違っている理由があるかもしれません - もっと知識のある人はうまくいけばうまくいけばうまくいきます)。

私が書くでしょう

Linear_Search = (array, desired) -> 
    for x in array 
     return true if x is desired 

    false 
+0

ありがとうございます。それは私のために働いた。 – jainaman224

+0

["JavaScriptループを使用して関数を生成する場合、ループ変数が閉じられ、生成されたすべての関数が最終値を共有しないようにクロージャラッパーを挿入するのが一般的です。 "(http://coffeescript.org/#loops)' do'は必要ではありません。 'do'の標準的な場合は、ビルド時に参照を避けることです。ループ内の関数。 –

+0

情報ありがとう! –

関連する問題