2016-06-15 4 views
0

変数tempを使用せずに評価された式の再利用、私は、いくつかの固定幅のテキストファイルを処理するファイルの行のそれぞれから部分を抽出し、追加する必要がありますそのテキストはすでに抽出されていない限り、配列に出力されます。これは、私が答えを見つけることができなかったという興味深い問題を提示します。は、私が働いている大きなJavaScriptのプロジェクトの一環として

私はその抽出された表現は、アレイの一部である場合、サブの文字列()、試験を抽出し、その後、アレイに評価された式を追加する必要があります。これをコード化するには2通りの方法があります。最初はこのように、二回部分文字列を評価することである。

var nextLine = 'Really long string that I only need part of: ID123456'; 
var tempStr = nextLine.substring (45); 
var idArray = []; 

if (idArray.indexOf (tempStr) === -1) { 
    idArray.push (tempStr); 
} 

最初のスニペットが含まnextLine.substringを評価する:第二は、式の結果を保持するために一時変数を使用することです

var nextLine = 'Really long string that I only need part of: ID123456'; 
var idArray = []; 

if (idArray.indexOf (nextLine.substring (45)) === -1) { 
    idArray.push (nextLine.substring (45)); 
} 

(45)を2回使用し、2回目は2回だけ使用される一時変数を使用します。これらのどちらも本当に私には魅力がありませんが、私はこれを知りませんし、これを回避する方法も見つけられませんでした。

この式をテストし、それを2回評価せずにして一時変数を使用せずにそれをプッシュすることができることのためのいくつかのトリックはありますか?

+0

_「2回のみ使用する」_ - 何度も何度も使用するため、変数を目的に使用しないでください(もう一度使用する必要がある情報を保持しています)。 –

+0

ベストプラクティスとクリーンなコーディングのために、未使用の変数を残しておくことを避ける方法があるかどうかを知りたいと思います。この特定のコードは潜在的に1日に何千回も実行されるため、私はそれをコード化する最良の方法を見つけるのはまったく正当ではないとは思わない。また、よりよい方法があれば、それが何であるか知りたいです。 – xarxziux

+0

'-1'の右側の') 'は' === 'の左側にあるはずです。トップコードの場合。 –

答えて

0

変数が本当にあなたを悩ませるなら、親切に並べ替えてスコープの中に入れてください。

var nextLine = 'Really long string that I only need part of: ID123456'; 
var idArray = []; { 
    var tempStr = nextLine.substring(45); 
    if (idArray.indexOf(tempStr) === -1) { 
     idArray.push(tempStr); 
    } 
} 

正直、小さなものにあなたの時間を無駄にしないでください。

+0

よろしくお願いします。返信いただきありがとうございます。私が取り組んでいるプロジェクトは私の大きな飛躍です。私は正しいことを確実にしたいと思っていました。この特定のスニペットをより良い方法でコーディングする必要があるように見えましたが、実際の答えは「いいえ」と推測されます。それは一時変数です! – xarxziux

関連する問題