6

この人気のあるスピーチに触発されて、配列の作成に関連するいくつかの問題を理解したいと思いました。次のように新しい配列を作成しているとしましょう:

Array(3)

コンソールで私は得ています:

[undefined, undefined, undefined]

これはかなり明白です。その配列に参加しているとしましょう:

Array(3).join()

私が得ている応答として:

",,"

これらはコンマで区切られた 3 つの空の文字列であるため、これもかなり理解できます。しかし、私がやろうとしているとき:

Array(3).join("lorem")

「lorem」を 2 回繰り返すだけの文字列を取得しています。

"loremlorem"

その単語が 3 回ではなく 2 回繰り返されるのはなぜですか。

4

5 に答える 5

10

join結合子として渡されたものを使用して、要素を結合します。loremしたがって、 sを「囲む」3 つの空の文字列があります。

|lorem|lorem|

空の配列を使用しない場合は、もう少し明白になる可能性があります。

var arr = [1, 2, 3, 4, 5]; // Like Array(5), except not sparse

arr.join('-and-'); // 1-and-2-and-3-and-4-and-5

joinちなみに、最初の出力例は正しくありません。,,またはである必要があります",,"。(出力形式により異なります。)

于 2012-09-11T18:44:03.497 に答える
3

Join は区切り文字を取ります。「lorem」は、以前にあったコンマに取って代わりました。

于 2012-09-11T18:44:24.310 に答える
2

Join は、配列内の要素を指定された区切り文字で結合します。

つまり、要素が 3 つあるため、必要な区切り文字は 2 つだけです (1 番目と 2 番目の間、2 番目と 3 番目の間)。

var a = [1,2,3];
a.join(','); //1,2,3
a.join('test'); // 1test2test3
于 2012-09-11T18:44:16.697 に答える
2

参加ドキュメントをご覧ください。

join 関数に渡すものは、配列の要素間の区切りとして使用されます。で配列を宣言するとArray(3)、3 つの要素を持つ配列が作成されます。join メソッドはこれらの要素の間にセパレータを挿入するため、2 つの "lorem" のみが表示されます。

実際に表示されるのは次のとおりblank lorem blank lorem blankです。blank は配列の空の要素です。

次のことを試してください。

var fruits = ["banana", "orange", "apple"]
fruits.join("lorem")

印刷します

bananaloremorangeloremapple

于 2012-09-11T18:52:51.200 に答える
1

3 つのメンバーの配列がある場合、はメンバー.joinのフィラーであるため、結合文字列は 2 つだけにする必要があります。

したがって、2 番目の出力は正しいです。

を使用した最初の出力.join()は、表示バグまたはテスト コードの誤った表現のようです。

のデフォルト値.join()は a","であるため、次のようになります。

new Array(3).join();

これを与える必要があります:

",,"

表示される出力:

[, ,]

を入力せずに入力new Array(3)するだけで発生する可能性が高くなります。console.join()

于 2012-09-11T18:44:17.070 に答える