4

I am looking for a less verbose way to instantiate multiple variables to the same value. I currently have this:

let a = 0;
let b = 0;
let c = 0;
let d = 0;
let e = 0;
let f = 0;
let g = 0;
let h = 0;
let i = 0;
let j = 0;
let k = 0;
let l = 0;
let m = 0;
let n = 0;
let o = 0;

And I am looking to do something like this:

let { a, b, c, d, e, f, g, h, i, j, k, l, m, n, o } = 0;

All these variables return undefined. There surely has to be a better way to instantiate multiple variables to the same value? I am using let as these values change over time.

TylerH
  • 20,799
  • 66
  • 75
  • 101
user3180997
  • 1,836
  • 3
  • 19
  • 31

3 Answers3

11

You could destructure your variables as an array as follows, though you need to know the number of elements, and it does require ES6+:

let [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o] = Array(15).fill(0);
TylerH
  • 20,799
  • 66
  • 75
  • 101
shrys
  • 5,860
  • 2
  • 21
  • 36
5

Here's what I would do.

const [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o] = repeat(0);

console.log(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o);

function* repeat(x) {
    while (true) yield x;
}

Related question: How to use destructuring assignment to define enumerations in ES6?

Aadit M Shah
  • 72,912
  • 30
  • 168
  • 299
1

You could take a generator which yields the wanted value for a destructuring with an array.

function* always(v) {
    while(true) yield v;
}

let [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o] = always(0);

console.log(a);
console.log(o);
Nina Scholz
  • 376,160
  • 25
  • 347
  • 392