2017-10-03 3 views
-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 ..."루프를 사용하면 정상적으로 작동합니다. 아무도 그 문제가 뭔지 알고 있습니까?

+0

음, 문제는 'wordSet'이 함수가 아니라는 것입니다. 전화하지 마세요. 'wordSet.has'를 원하셨습니까? – Bergi

답변

0

주석에서 언급했듯이 wordSet은 함수가 아니므로 호출 할 수 없습니다. 저는 의견 작성자가 귀하의 세트와 함께 사용하는 것이 옳다고 생각합니다. 세트는 고유합니다 (이미 알고있을 것입니다). 집합은 for ... for 루프 및 구조화되지 않은 구조와 함께 사용할 수 있습니다.

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

난 당신이 단순히 설정에 배열의 각 문자를 추가 할 수 있으며 그것은 단지 중복되지 고유의 것들을 유지하는 것입니다 당신이 코드의이 지역에 후 무엇인지 모르겠습니다. 이 함수에서는 결코 array2를 사용하지 않습니다. array1과 array2에 중복 문자를 찾으려고합니까?

다음 작업을 수행 할 수 있도록 경우 (추가 각 문자를 추가 사용하여 각 배열 항목과

1) 부하 하나 세트, 세트 만 사용))

이 독특한 것들을 계속됩니다 당신이 세트에 대해 검색 할 수 두 번째 배열 같은 일이 :

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