함수 프로그래밍을 배우는 중이므로 for
루프를 완전히 없애는 것은 때로는 많은 제어와 자유를 제공하기 때문에 어려운 과제였습니다. 다음은 문자열이 isogram
인지 확인하는 예입니다 (문자를 반복해서 입력하지 않아야 함). 중첩 된 for
루프를 사용하면 쉽게 해결할 수 있습니다. 고차원 함수 나 다른 어떤 기능을 사용하여이 기능을 수행 할 수있는 방법이 있습니까? 어떤 제안이라도 큰 도움이 될 것입니다.Function 스타일에서 중첩 된 For 루프를 수행하는 방법
코드 :
function isIsogram(string) {
let array = string.split('');
let condition = true;
for (let i = 0; i < string.length; i++) { //first loop picks character
for (j = i + 1; j < string.length; j++) { //second loop compares it rest
if (array[i].toLowerCase() == array[j].toLowerCase())
condition = false; //if repeat, the condition false
}
return condition;
}
}
첫 번째 반복 이후에 '돌아온'것입니다. – thefourtheye
왜 전체 문자열을 먼저 소문자로 만든 다음 중첩 된 반복마다 이중 lowercasing 대신 분할합니까? 당신은'j'를 어디에도 변함이 없다고 선언하지 않고 있습니다. – Azamantes
문자열을 분할하는 이유는 무엇입니까? 문자열 길이를 가져 와서 반복 할 수 있습니다. 조건 변수는 불필요하므로'condition = false; '대신'false를 반환 '하고 함수의 끝에는'return true;'를 넣을 수 있습니다. 'return condition;'부분은 제거되어야합니다. – Azamantes