What is the best aproach using ES6 sintaxe to go from this:
const mapedTopicsArray = [
['javascript', 'reactjs'],
['Java', 'reactjs'],
]
To this:
const topicsArrayMergedWithoutDuplicates = ['javascript', 'reactjs','Java']
I know that if I use .reduce() I can acomplish that, but I can't figure out how, the nested Array thing is bogging me.
CodePudding user response:
You can easily achieve the result using Set
and flat
.
const mapedTopicsArray = [
["javascript", "reactjs"],
["Java", "reactjs"],
];
const topicsArrayMergedWithoutDuplicates = [...new Set(mapedTopicsArray.flat())];
console.log(topicsArrayMergedWithoutDuplicates );
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" frameborder="0"></iframe>
CodePudding user response:
const mapedTopicsArray = [
['javascript', 'reactjs'],
['Java', 'reactjs'],
]
const result = mapedTopicsArray
.reduce((acc, prev) => acc.concat(prev), [])
.filter(ifThisItemFirstAppearance)
function ifThisItemFirstAppearance(value, index, self) {
return self.indexOf(value) === index
}
console.log(result)
First reduce the list of lists into a list, then filter repeated items.
Partial credit to this answer on how to filter duplicates