コンマ区切りの文字列で配列を結合することに関する多くの質問と回答を確認しましたが、私の問題は、文字列を人間が読めるようにしていることです。つまり、タグ配列が2つのタグの場合、それtag1 and tag2
は100の場合ですタグの場合は、カンマをセパレータとして使用する前にtag1, tag2, ,,,tag99 and tag100
、最後にand を使用します。and
JQueryで処理する方法はありますか?
コンマ区切りの文字列で配列を結合することに関する多くの質問と回答を確認しましたが、私の問題は、文字列を人間が読めるようにしていることです。つまり、タグ配列が2つのタグの場合、それtag1 and tag2
は100の場合ですタグの場合は、カンマをセパレータとして使用する前にtag1, tag2, ,,,tag99 and tag100
、最後にand を使用します。and
JQueryで処理する方法はありますか?
使用できます.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 つの要素がある場合、その文字列と最後の要素を結合します。別の簡単な解決策は、最後のコンマを and に置き換えることです。
次のコード:
var a = [0,1,2,3,4];
a.join(', ').replace(/,(?!.*,)/gmi, ' and');
トリックを行う必要があります。(また、必要に応じて正規表現修飾子で遊んでください)。
考えられる問題の 1 つは、大きな配列がある場合に発生する可能性がありますが、うまくいくはずです。
これを試して:
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));