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())

1 Answer 1

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

Sign up to request clarification or add additional context in comments.

1 Comment

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].

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.