将两个数组合二为一,不重复
Combine two arrays In one without duplicates
使用 ES6+ sintaxe 的最佳方法是什么:
const mapedTopicsArray = [
['javascript', 'reactjs'],
['Java', 'reactjs'],
]
为此:
const topicsArrayMergedWithoutDuplicates = ['javascript', 'reactjs','Java']
我知道如果我使用 .reduce() 我可以完成它,但我不知道如何实现,嵌套的数组让我很困惑。
const mapedTopicsArray = [
["javascript", "reactjs"],
["Java", "reactjs"],
];
const topicsArrayMergedWithoutDuplicates = [...new Set(mapedTopicsArray.flat())];
console.log(topicsArrayMergedWithoutDuplicates );
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)
首先将列表的列表缩减为列表,然后过滤重复项。
部分归功于 this answer 如何过滤重复项
使用 ES6+ sintaxe 的最佳方法是什么:
const mapedTopicsArray = [
['javascript', 'reactjs'],
['Java', 'reactjs'],
]
为此:
const topicsArrayMergedWithoutDuplicates = ['javascript', 'reactjs','Java']
我知道如果我使用 .reduce() 我可以完成它,但我不知道如何实现,嵌套的数组让我很困惑。
const mapedTopicsArray = [
["javascript", "reactjs"],
["Java", "reactjs"],
];
const topicsArrayMergedWithoutDuplicates = [...new Set(mapedTopicsArray.flat())];
console.log(topicsArrayMergedWithoutDuplicates );
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)
首先将列表的列表缩减为列表,然后过滤重复项。
部分归功于 this answer 如何过滤重复项