Javascript 对于循环的“集合不是函数”

Javascript 对于循环的“集合不是函数”,javascript,for-of-loop,Javascript,For Of Loop,我这里有这个代码: 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]) } } f

我这里有这个代码:

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不是一个函数。如果我用普通的。。。循环它会工作得很好。有人知道这里的问题是什么吗?

如评论中所述,wordSet不是一个函数,因此您不能调用它。 我认为评论员是对的,你是在你的设置使用了has之后。 集合是独一无二的,你可能已经知道了。 集合可用于for…of循环和反结构化

for(let word of wordSet) // this is allowable
我不确定你在这方面的代码是什么,因为你可以简单地添加数组的每个字母到集合中,它将只保留唯一的字母,没有重复。您从未在函数中使用array2。你想在array1和array2中找到重复的字母吗

如果是这样,您可以执行以下操作:

1使用“添加每个字母”为每个数组项加载一个集合,集合将只保留唯一的字母

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
对于每个数组,使用两组唯一的字母可能更有效。这取决于你真正想要什么

希望这对你有所帮助。 -WWC

问题是,单词集不是一个函数。别这么说。你是说wordSet.has吗?