29

コンマ区切りの文字列で配列を結合することに関する多くの質問と回答を確認しましたが、私の問題は、文字列を人間が読めるようにしていることです。つまり、タグ配列が2つのタグの場合、それtag1 and tag2は100の場合ですタグの場合は、カンマをセパレータとして使用する前にtag1, tag2, ,,,tag99 and tag100、最後にand を使用します。and

JQueryで処理する方法はありますか?

4

8 に答える 8

80

使用できます.slice()

> var a = [1, 2, 3, 4, 5];
> [a.slice(0, -1).join(', '), a.slice(-1)[0]].join(a.length < 2 ? '' : ' and ');
'1, 2, 3, 4 and 5'
  • a.slice(0, -1).join(', '): 最後の要素を除くすべての要素を取り、コンマで結合します。
  • a.slice(-1)[0]: 最後の要素です。
  • .join(a.length < 2 ? '' : ' and ')and:少なくとも 2 つの要素がある場合、その文字列と最後の要素を結合します。
于 2013-04-27T11:59:54.227 に答える
33

別の簡単な解決策は、最後のコンマを and に置き換えることです。

次のコード:

var a = [0,1,2,3,4];
a.join(', ').replace(/,(?!.*,)/gmi, ' and');

トリックを行う必要があります。(また、必要に応じて正規表現修飾子で遊んでください)。

考えられる問題の 1 つは、大きな配列がある場合に発生する可能性がありますが、うまくいくはずです。

于 2016-12-08T08:59:09.783 に答える
2

これを試して:

    var substr = new Array("One", "Two", "Three");
    var commaList = '';

    var i;
    for (i = 0; i < substr.length; ++i) {
        if (i == substr.length - 1)
            commaList += " and " + substr[i];
        else
            commaList += ", " + substr[i];
    }

    console.debug(commaList.substr(2, commaList.length));
于 2013-04-27T12:01:48.393 に答える