JavaScriptで配列の文字列をsuffix付きで連結

前回記事の応用で、複数の文字列の末尾に同じ文字列(suffix)を付けて連結する場合を考えてみます。

var array = ['#aaa', '#bbb'];
var string = array.join('_suffix, ') + '_suffix';

結果(string)
#aaa_suffix, #bbb_suffix

前回の応用ですから、これは簡単ですね。ついでに配列の各要素の前後に文字列を付ける場合も考えてみます。

var array = ['aaa', 'bbb'];
var string = '#' + array.join('_suffix, #') + '_suffix';

結果(string)
#aaa_suffix, #bbb_suffix

やや見苦しいですが(^_^;)ループ文を使わないで済みますので、これで良しとしましょう。
配列が不変ならば全て文字列で書いてしまったほうが早いですが、配列内容や要素数が不定だったり、後で追加する可能性がある場合にはこの方法が便利です。

テーマ: プログラミング - ジャンル: コンピュータ

JavaScriptで配列の文字列をprefix付きで連結

配列にある複数の文字列の頭に同じ文字列(prefix)を付けて連結したい事が時々あります。jQueryオブジェクトを複数のクラス指定で作りたい場合などです。
もちろんforやforEachを使えば可能な事なのですが、やりたい事の割に記述が冗長すぎる気がしたので、他の方法はないか考えてみました。
結論から言えば、完璧ではないものの可能です。

JavaScriptでの文字列の連結はjoin()で行えます。これはPHPのimplode関数や、Perlのjoin関数に相当するメソッドです。
join()は区切り文字を挟んで連結することは出来ますが、これだけではprefixは付けられません。

var array = ['aaa', 'bbb'];
var string = array.join(',');

結果(string)
aaa,bbb

それならば、頭に空文字列の要素を追加してprefix込みの区切り文字で連結すればいけるんじゃないかな?と考えたのが次の例です。concat()で空文字列と配列を連結した後、prefix込みでjoin()して、最後に頭の不要な文字を消去してます。

var string = [''].concat(array).join(',.prefix_').slice(1);

結果(string)
.prefix_aaa,.prefix_bbb

できた( ー`дー´)キリッ
…いや、できたことはできたのですが、何をやってるか少し分かり難いし、slice()でのカットは区切り文字の文字数に依存するので余り宜しくない。
うーん、と考えた結果、最終的にこれに落ち着きました。

var string = '.prefix_' + array.join(', .prefix_');

結果(string)
.prefix_aaa, .prefix_bbb

できた(`・ω・´)シャキーン
同じprefixを2箇所指定しないといけない為、記述の美しさの点では劣りますが、文字数や要素が少なく済み、見通しが良いのが利点です。やってることが単純なので、処理も速いことでしょう。
jQueryオブジェクトにしたい場合は下記のように$()で囲ってしまえば、余計な変数も作らずに済みます。

var obj = $('.prefix_' + array.join(', .prefix_'));

関連記事
JavaScriptで配列の文字列をsuffix付きで連結

テーマ: webサイト作成 - ジャンル: コンピュータ

住信SBIのVISAデビットをLOHACOで使う

住信SBIネット銀行がVISAデビットカードを開始しましたが、LOHACOで使おうとするとエラー。
どうもYahoo!ウォレットが今のところ対応してないようです。
そこで、カード情報入力時に「Yahoo!ウォレットに登録する」をチェックしないで注文確定すると、通りました。
クレジットカード登録はできませんが、デビットを使って買い物することは可能です。
また、Amazonでは普通に登録して買い物ができました。

楽天VISAデビットカード(当時はまだイーバンクだったかな?)の開始当初もそうでしたが、一部のお店で使えない状況はやはり有るようです。恐らくは、徐々に対応してゆくのでしょう。
楽天から住信SBIのデビットカードに切り替えようかと思ってましたが、もう暫くは併用する必要がありそうですね。