Skip to content
Advertisement

Returning array values, not the array iterator in Javascript

How can I return the values of an array? The methods .values() and .entries() seem to return an Array Iterator. This is not what I want. I am also not allowed to modify func1() function for this edge case.

const test = func1();

console.log(test); // actual: [[1,2]] what I want: [1,2]

function func1() { // not allowed to modify func1
  return [func2()];
}

function func2() {
  const set = new Set();
  set.add(1);
  set.add(2);
  return Array.from(set); 
  // return Array.from(set).values() returns Array Iterator
}

Thanks!

Advertisement

Answer

As Bergi stated, func1() will always return an array, no matter what func2() returns. But there are a couple of ways to achieve this based on the return value of func1().

You can either simply use the first element in the array test[0], you can use the Array.flat() method, or the spread operator. See the snippet below.

const test = func1();

function func1() { // not allowed to modify func1
  return [func2()];
}

function func2() {
  const set = new Set();
  set.add(1);
  set.add(2);
  return Array.from(set); 
  // return Array.from(set).values() returns Array Iterator
}

// First element in array
console.log(test[0]);

// Array.flat()
console.log(test.flat());

// Spread operator
console.log(...test);
Advertisement