0

JScript で一連の文字列を区切り記号で結合するにはどうすればよいですか?

(線形実行時間のソリューションを探しています。)

4

3 に答える 3

6

方法が好きjoin()ですか?= D

var elements = ["1", "2", "3"];
var joinedString = elements.join(',');
于 2011-08-30T22:02:24.233 に答える
3

このようなもの:

['a', 'b', 'c'].join(',');

ただし、文字列の数が少ない場合は、+演算子でも問題ありません(状況によってはうまくいく場合があります)。これは、2つのアプローチを比較した素晴らしい記事です。

そして懐疑論者のためのjsperfページ。

于 2011-08-30T22:02:40.160 に答える
2

配列でjoinを使用できます。

var strArray = [
    "test1",
    "test2",
    "test3"
];

var output = strArray.join(", ");

ここにいくつかの異なるメソッドのjsperfテストがあります:http://jsperf.com/joining-strings。参加は間違いなく私が試した方法の中で最速で、少なくとも3倍(Chromeの場合)です。

jsperfを自分で試してみるか、気になるものを正確にモデル化するように変更する必要があります。驚いたことに、Firefox6とSafari5は、を使用するよりも、文字列の束を追加するだけの方が高速.join()です。

linear実行時間のあるソリューションを探しているとおっしゃいました。つまり、弦の数を2倍にすると、パフォーマンスは2倍以上悪くなることはないと思います。つまり、さまざまなケースをテストして、線形パフォーマンスに最も近い手法を確認する必要があります。最初のjsperfは、9つの文字列を区切り文字で連結していました。だから、私は2番目のjsperfを書きましたこれは、18個の文字列を区切り文字で連結したものです。Chromeではどの手法も完全に直線的ではありませんでした。奇妙なことに、全体的に最も遅いforループ+ =メソッドは、線形に最も近いものでした。ですから、高速にするか線形にするかを決める必要があると思います。私が試した最も遅い方法は線形に最も近いですが、それでも遅いです。非常に多くの文字列を連結する場合は、その特定のケースをテストして、線形性または全体的なパフォーマンスのどちらが勝つかを確認する必要があります。

于 2011-08-30T22:03:11.237 に答える