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 ответ

Как уже упоминалось в комментарии, wordSet не является функцией, поэтому вы не можете вызвать ее. Я думаю, что комментатор прав, что вы после использования имеет с вашим набором. Наборы уникальны (вы, наверное, уже знали это). Наборы могут использоваться с for... of loop и неструктурированными.

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

Я не уверен, что вам нужно в этой области кода, так как вы можете просто добавить каждую букву массива в Set, и он будет содержать только уникальные без дубликатов. Вы никогда не используете array2 в функции. Вы пытаетесь найти повторяющиеся буквы в массиве1 и массиве2?

Если это так, вы можете сделать следующее:

1) загрузить один Set с каждым элементом массива, используя add (добавьте каждую букву, набор сохранит только уникальные)

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

Другие вопросы по тегам