5

この投稿Javascript code to parse CSV dataの回答に関連する質問があります

"\r\n"最後に、配列に追加したくない余分なものがあることがわかりました。whileループから抜け出そうとしました...

元の作業ラインは

 while (arrMatches = objPattern.exec( strData )){

しかし、私は抜け出す必要がありますarrMatches = "\r\n"

while ((arrMatches[ 1 ] != "\\r\\n") && arrMatches = objPattern.exec( strData )){

しかし、Invalid left-hand side in assignmentエラーが発生します。

正しい構文は何ですか?

4

6 に答える 6

7

読みやすく理解しやすいように、2 つの条件を分離するだけです。

while(arrMatches = objPattern.exec( strData )){

    if(arrMatches[ 1 ] == "\r\n"){
        break;
    }
    /*
     *if(arrMatches[ 1 ] == "\r\n")
     *   break;
     */
     // rest of code
}
于 2012-09-13T00:37:42.047 に答える
5

このアプローチは機能するはずです。唯一のことは、2 番目の条件から true に設定されるの( )を避けるために、arrMatches も間にある必要があるということです。arrMatches

while ((arrMatches = objPattern.exec( strData )) && (arrMatches[ 1 ] != "\\r\\n")) {
于 2012-09-13T01:00:46.497 に答える
3

別の方法: 最後の式が 0/false に評価されると、ループが中断されることを期待して、演算子の式ブロックをwhileコンマ区切りの式のチェーンに簡単に分割できます。

JSのコンマ','演算子は常に最後の式を返すため、論理 && 連鎖とは異なります。それについて思い出させてくれたGitaarLabに感謝します

これらの例では、最後の変数が 0 に達するとループが停止し、false と評価されます。

var i = 10, j = 10;
while (i--, j--) console.log(i);
/*9
8
7
6
5
4
3
2
1
0*/

var i = 10, j = 5;
while (i--, j--) console.log(i);
/*9
8
7
6
5*/

var i = 10, j = 5, k = 3;
while (i--, j--, k--) console.log(i);
/*9
8
7*/
于 2013-05-30T07:26:06.597 に答える
1

while1 つの条件を処理するループを試すことができます。whileループ内にifは、他の条件をチェックするステートメントがあります。

例:

while (one condition) {
   if (other condition) {
       do something;
   }
}

これが適切な方法であるかどうかは、完全にはわかりません。もっと良いものが見つかったら、答えを更新します。

于 2012-09-13T00:38:08.917 に答える
0

試してください: while ((arrMatches[ 1 ] != "\r\n") && arrMatches == objPattern.exec( strData )){

単一の「=」を使用すると、実際にはarrMatchesに値を割り当てています。値を比較するには、==を使用する必要があります。

于 2012-09-13T00:23:25.800 に答える