最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Javascript new Array and join() method - Stack Overflow

programmeradmin4浏览0评论

Inspired by this popular speech I wanted to figure out some issue related to creating arrays. Let's say I am creating new array with:

Array(3)

In console I am getting:

[undefined, undefined, undefined]

Which is pretty obvious. Let's say I am doing joining on that array:

Array(3).join()

As a response I am getting:

",,"

Which is pretty understandable as well, because these are three empty strings, separated by mas, I suppose. But when I am trying to do:

Array(3).join("lorem")

I am getting string with only two repeat of ”lorem”:

"loremlorem"

Why there are two, not three repeats of that word?

Inspired by this popular speech I wanted to figure out some issue related to creating arrays. Let's say I am creating new array with:

Array(3)

In console I am getting:

[undefined, undefined, undefined]

Which is pretty obvious. Let's say I am doing joining on that array:

Array(3).join()

As a response I am getting:

",,"

Which is pretty understandable as well, because these are three empty strings, separated by mas, I suppose. But when I am trying to do:

Array(3).join("lorem")

I am getting string with only two repeat of ”lorem”:

"loremlorem"

Why there are two, not three repeats of that word?

Share Improve this question edited Sep 11, 2012 at 19:05 chrisfrancis27 4,5361 gold badge25 silver badges32 bronze badges asked Sep 11, 2012 at 18:41 user1292810user1292810 1,8227 gold badges20 silver badges38 bronze badges 2
  • 3 There are only 2 mas when you use join(), why do you expect there to be 3 lorems? – gen_Eric Commented Sep 11, 2012 at 18:44
  • Thanks for all your answers. It appeared that I have incorrectly intrpreted what join() method should do. Now it is all clear to me. – user1292810 Commented Sep 11, 2012 at 19:09
Add a ment  | 

5 Answers 5

Reset to default 10

join joins the elements together, using what was passed as a joiner. So you have three empty strings "surrounding" the lorems:

|lorem|lorem|

It might be a little more obvious if you don't use an empty array:

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

And your first example join output, by the way, is incorrect. It should be ,, or ",,". (Depends on the output format.)

Join takes a separator. "lorem" has replaced the mas that were there before.

Join bines the elements in an array with the specified delimiter.

So, since there are 3 elements, you only need 2 delimiters (between 1st and 2nd, and between 2nd and 3rd).

var a = [1,2,3];
a.join(','); //1,2,3
a.join('test'); // 1test2test3

Have a look to the join documentation.

What you're passing to the join function will be used as separator between the elements of the array. When you declare an array with Array(3), you're creating an array with three elements. The join method inserts your separator between those elements and so you will see only two "lorem".

Actually, what you see is: blank lorem blank lorem blank. Where blank is the empty elements of the array.

Try to do the following:

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

It will print

bananaloremorangeloremapple

If you have an Array of 3 members, the .join is the filler in between the members, so there should only be two join strings.

Therefore your second output is correct.

Your first output using .join(), seems like a display bug or a misrepresentation of your testing code.

The default value for .join() is a ",", so this:

new Array(3).join();

should give you this:

",,"

The output that you show:

[, ,]

will more likely e from just typing new Array(3) in the console without the .join().

发布评论

评论列表(0)

  1. 暂无评论