我不确定我的函数中缺少什么来删除集合中的元素。看来循环没有按预期工作。如果您有更优化的 O(1) 解决方案,请分享。谢谢!
const dupArr = ["a", "b", "c", "d", "d",'dog']
function transformSearchFields(fields) {
let noDupes = new Set(fields)
const searchData = new Set(['dog', 'a'])
// iterate over noDupes set and check if element is in the searchData set. If it is, remove the element from the noDupes set
noDupes.forEach(element => {
if (element in searchData) {
noDupes.delete(element)
}
})
return [...noDupes]
}
// desired output: ["b", "c", "d"]
我希望循环删除 searchData 集中的值
最佳答案
以下是如何过滤响应中具有唯一值的数组的示例:
const inputArray = ['a', 'b', 'c', 'd', 'd', 'dog'];
const dataToReject = ['dog', 'a'];
const filteredUniqueArray = [...new Set(
inputArray.filter(inputArrayElement =>
!dataToReject.some(dataToRejectElement =>
inputArrayElement == dataToRejectElement
)
)
)];
console.log(filteredUniqueArray); // ['b', 'c', 'd']
关于javascript - 迭代集合并删除元素(如果它在另一个集合中)并返回数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75826050/