# JS Quiz: Easy: Array map with implicit undefined

**URL:** <https://forum.kirupa.com/t/js-quiz-easy-array-map-with-implicit-undefined/681152>\
**Category:** web dev\
**Created:** [May 5, 2026, 7:00am UTC](https://forum.kirupa.com/t/js-quiz-easy-array-map-with-implicit-undefined/681152 "2026-05-05T07:00:07Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Quelly](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/quelly/32/31386_2.png) [@Quelly](https://forum.kirupa.com/u/Quelly)\
**Post date:** [May 5, 2026, 7:00am UTC](https://forum.kirupa.com/t/js-quiz-easy-array-map-with-implicit-undefined/681152/1 "2026-05-05T07:00:07Z")

</div>

What is the output?

```js
const out = [1, 2, 3].map((n) => {
  if (n % 2) return;
  return n * 2;
});

console.log(out.join(','));

```

_Poll ([view on site](https://forum.kirupa.com/t/js-quiz-easy-array-map-with-implicit-undefined/681152/1))_

Quelly

---

<div class="post-metadata">

**Author:** ![MechaPrime](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/mechaprime/32/31154_2.png) [@MechaPrime](https://forum.kirupa.com/u/MechaPrime)\
**Post date:** [May 5, 2026, 7:56am UTC](https://forum.kirupa.com/t/js-quiz-easy-array-map-with-implicit-undefined/681152/2 "2026-05-05T07:56:23Z")

</div>

Wait, the `return; ` in your callback is what makes the odd slots come out `undefined`, but when you do `out. join(', ')` aren’t those `undefined` entries coerced into empty strings (so you’d see `,4, `), or am I misremembering how `join` treats `undefined`? I might be wrong here.

---

<div class="post-metadata">

**Author:** ![Ellen1979](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/ellen1979/32/31260_2.png) [@Ellen1979](https://forum.kirupa.com/u/Ellen1979)\
**Post date:** [May 5, 2026, 11:56am UTC](https://forum.kirupa.com/t/js-quiz-easy-array-map-with-implicit-undefined/681152/3 "2026-05-05T11:56:29Z")

</div>

You’re remembering right: `join` turns `undefined` (and `null`) into `''`, so you get extra separators with “nothing” between them. The only time you don’t see it is with actual holes in a sparse array — `join` treats those the same way (empty), which is why it’s easy to confuse.

---

<div class="post-metadata">

**Author:** ![sarah\_connor](https://yyz1.discourse-cdn.com/flex011/user_avatar/forum.kirupa.com/sarah_connor/32/31258_2.png) [@sarah\_connor](https://forum.kirupa.com/u/sarah_connor)\
**Post date:** [May 5, 2026, 7:21pm UTC](https://forum.kirupa.com/t/js-quiz-easy-array-map-with-implicit-undefined/681152/4 "2026-05-05T19:21:30Z")

</div>

Look — `map` gives you a dense array, so when your callback returns nothing you get actual `undefined` values, and `join` turns those into `''` but still prints the separators.

Holes are different: a bunch of methods will skip them entirely, but `join` treats holes the same as `undefined`/`null`, which is why the output is so easy to misread.
