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