gkeenley
gkeenley

Reputation: 7388

How to fill an Array conditionally?

I have the following JS code:

let a = false
let b = true
let c = [...(a ? {d: 1} : {})]

I'm trying to set c to [{d: 1}] if a is true, and set it to [] if a is false. It's throwing the error object is not iterable (cannot read property Symbol(Symbol.iterator))

Why is it throwing this error and how can I fix it?

Upvotes: 2

Views: 103

Answers (1)

Nina Scholz
Nina Scholz

Reputation: 386680

You need to wrap the expressions in arrays.

const
    a = false,
    b = true,
    c = [...(a ? [{ d: 1 }] : [])],
    d = [...(b ? [{ d: 1 }] : [])];

console.log(c);
console.log(d);

Upvotes: 3

Related Questions