# Intermediate Algorithm Scripting - Sorted Union

Tell us what’s happening:
in the given challenge, we have to write a function that takes arrays as input and return a combined array having unique values in the order they were passed as arguments.

in my code, I first used the spread operator and argument object to combine the arrays and then used set to filter out the unique values . however I’m not getting the desired result.

Your code so far

``````function uniteUnique(arr) {
let arr1 = [...arguments];
let mergearr = new Set(arr1);
return [...mergearr];
}

uniteUnique([1, 3, 2], [5, 2, 1, 4], [2, 1]);
``````

User Agent is: `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36`

Challenge: Intermediate Algorithm Scripting - Sorted Union

Link to the challenge:

What is in `arr1`? Log it out and check.

(also, `arr1` is a not so great variable name. Also, you should use `const` for array declarations when possible)

thank you for helping out I’ll keep in mind next time coding
but could you please elaborate what do you mean by “what is in arr1”?..iit obviously returns the arguments provided in function call with their indices.

“Obviously” is the enemy of a debugging mindset. Check the actual contents of `arr1` via `console.log()`. The contents are not individual elements!!

1 Like

you are correct. The output is an array containing all the arrays individually. It would be great help if you could tell me what should be my desired result for the set operator to work on it.
P.S.:- i’m new to coding… sorry if my questions come out to be annoying.

`console.log()` is magic, honestly.

``````function uniteUnique(arr) {
const args = [...arguments];
console.log("args      :", args);
const argsSet = new Set(args);
console.log("argsSet   :", argsSet);
console.log("...argsSet:", [...argsSet]);
return [...argsSet];
}
``````

Here I get

``````args      : [ [ 1, 3, 2 ], [ 5, 2, 1, 4 ], [ 2, 1 ] ]
argsSet   : Set(3) {1,3,2, 5,2,1,4, 2,1}
...argsSet: [ [ 1, 3, 2 ], [ 5, 2, 1, 4 ], [ 2, 1 ] ]
``````

So it looks like the items fed into the Set are the individual items in the `args` array.

So really, your question is, how do you “flatten” `args` into something that looks like `[1, 3, 2, 5, 2, 1, 4, 2 ,1]`. There are lots of potential approaches. What might work?

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.