2

Exploring Sets now and could not get a new Set from an array of x arrays in it. I what to use Array.map method inside new Set().

Here is what I'm trying to do, and it seems logical, but in the end having values only from the 1st array:

new Set(...array.map(x => x.value));

Will be awesome to understand what I am doing wrong and how it should look like

Update: To be more clear in my need:

const array = [[1,1,3,4], [2,2,3,4], [1,1,3,5]];
new Set(...array.map(x => x));

My goal to have [1,2,3,4,5] but getting [1,3,4]

Solution:

 new Set(array.map(x => x.value).flat())
kadeikin
  • 57
  • 1
  • 2
  • 9

1 Answers1

1

You need only the array, not spreaded parameters:

new Set(array.map(x => x.value));

From Set:

Syntax

new Set()
new Set(iterable)

With a nested array, you need a flat it first:

const
    array = [[1, 1, 3, 4], [2, 2, 3, 4], [1, 1, 3, 5]],
    unique = new Set(array.flat()),
    result = [...unique].sort((a, b) => a - b);

console.log(...unique); // still a set
console.log(...result); // array, sorted
Nina Scholz
  • 376,160
  • 25
  • 347
  • 392
  • Sorry, maybe incorrectly described my goal. I think that will be better: `const array = [[1,1,3,4], [2,2,3,4], [1,1,3,5]]; new Set(...array.map(x => x));` I want `[1,2,3,4,5]` in the end, but getting `[1,3,4]`. – kadeikin Apr 07 '22 at 08:39