我这里有这个代码:
function Duplicate(array1, array2){
var wordSet = new Set();
var result = [];
console.log(wordSet)
for(let letter of array1){
if(!wordSet(array1[letter])){
wordSet.add(array1[letter])
}
}
for(let word of wordSet){
result.push(word)
}
return result;
}
console.log(Duplicate(['a','b','c'],['a','k','d','m','k']))
然而,当我试图运行它时,它说" wordSet不是一个函数"。如果我使用常规" for ..."循环它会工作正常。有谁知道这里的问题是什么?
答案 0 :(得分:0)
如评论中所述,wordSet不是函数,因此您无法调用它。 我认为这位意见提供者是正确的,因为你使用了你的套装。 集合是唯一的(您可能已经知道)。 集可以用于...循环和解构。
for(let word of wordSet) // this is allowable
我不确定你在代码的这个区域后面是什么,因为你可以简单地将数组的每个字母添加到Set中,它只会保留唯一的没有重复的字母。你永远不会在函数中使用array2。您是否尝试在array1和array2中找到重复的字母?
如果是这样,您可以执行以下操作:
1)使用add加载一个包含每个数组项的Set(添加每个字母,该组只保留唯一的数组)
2)使用第二个数组,你可以搜索集合,如:
for (let val of array2){ // look at each letter in the array
if (wordSet.has(val)){ // if that letter is in your unique set from array 1
result.push(val); // push it onto your duplicate only array
} // end if
} // end for
return result; // return the duplicate array to the caller
使用2套(每个数组的一组唯一字母)可能更有效。取决于你真正的目标。
希望这对你有所帮助。 -WWC