For-Of Loop" Set不是函数"

时间:2017-10-03 17:24:55

标签: 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])
       }
    }

    for(let word of wordSet){
        result.push(word)
    }

    return result;
}

console.log(Duplicate(['a','b','c'],['a','k','d','m','k']))

然而,当我试图运行它时,它说" wordSet不是一个函数"。如果我使用常规" for ..."循环它会工作正常。有谁知道这里的问题是什么?

1 个答案:

答案 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