22

各値を取得するために使用するコンマ区切り値の文字列ビルドがsplitあり、その後、各値を新しい行に表示したいのですが、実際には、表示されている最後の2つを除いて、新しい行に各値を取得します一緒に同じ行に。明確にするために:

値1

,値2

,値3

,値4,値5

これが私が使用している機能です:

_checkDates: function(dates) {
    if (dates != null)
    {
        var zzz = dates.split(',');
        var xxx = zzz.length;
        console.log(xxx);
        for (var i=0; i<=xxx; i++)
        {
            zzz[i] = zzz[i] + '<br />';
            return zzz;
        }
    }
    return dates;
}

明確にするために、これは ExtJS 4 で書かれています。この場合、問題は純粋な JavaScript であり、ExtJS 4 とは関係がないことはほぼ確実ですが、とにかく、間違っている可能性があります。

では、なぜそれが起こるのか、そしてその最後の要素を新しい行に乗せるにはどうすればよいのでしょうか?

4

3 に答える 3

37

すでにステファンがあなたの間違いについて言及しているので、私はあなたの関数ビットをよりきれいに変更しました。

function splitDate(dates) {
    if (dates != null)
    {
        var dates = dates.split(',');
        var xxx = dates.length;
        console.log(xxx);
        for (var i=0; i<xxx; i++)
        {
            dates[i] = dates[i];                    
        }
    }
    console.log(dates.join('\r\n'));
    return dates.join('\r\n');        
}

上記の関数は、1 行で実行できます。

配列の場合は、次の方法で新しい行に分割できます。

var arr = ['apple','banana','mango'];
console.log(arr.join('\r\n'));

文字列の場合:

var str = "apple,banana,mango";
console.log(str.split(',').join("\r\n"));
于 2015-11-21T10:14:41.483 に答える
15

forループは疑わしいです。まず、すべてのアイテムを処理するわけではありません(@sarfrazが指摘したように、最後のアイテムはありません)。zzz当然のことながら、forループ本体に結果()を返します。

for (var i=0; i<=xxx; i++)
{
  zzz[i] = zzz[i] + '<br />';
  return zzz; // for-loop will stop here! resulting in ["value1<br />", "Value2", etc...]
}

Javscriptでは、配列に簡単に「参加」できます。

return dates.split(',').join("<br />")

replace文字列を置き換えるだけなので、次の方法を使用できます。

return dates.replace(",", "<br />");
于 2012-06-11T15:21:37.077 に答える