-2

我在这里有这段代码:

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 ...”循环,它会正常工作。有谁知道这里的问题是什么?

4

1 回答 1

0

正如评论中提到的, wordSet 不是一个函数,所以你不能调用它。我认为评论者是正确的,你在使用 has 和你的集合之后是正确的。集合是独一无二的(你可能已经知道了)。集合可以与 for...of 循环一起使用并解构。

for(let word of wordSet) // this is allowable

我不确定您在代码的这一部分中追求什么,因为您只需将数组的每个字母添加到 Set 中,它只会保留唯一的字母而没有重复。您永远不会在函数中使用 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

使用 2 组(每个数组的一组唯一字母)可能会更有效。取决于你真正追求的是什么。

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

于 2017-10-03T19:45:48.190 回答