문자열 속 문자 한개 씩 돌며 조건 확인하는 방법 _ JS

2021. 7. 16. 19:57JS

문자열 속 특정 문자 갯수가 궁금할 경우

let text = "Neh Neh Neh Boo Boo~!"

위 문자열 속 영문자 'O'가 몇번 들어있는지 갯수를 확인하고 싶을 때 복잡한 for문은 사용하지 않으면서 python 속 count 함수와 같은 결과를 원한다면 어떻게 해야할지 정리해보았다.

 


 

1) 변수가 문자열인 경우

 

let text = "Neh Neh Neh Boo Boo~!"

text . split( "o" ) . length - 1;

 

split()함수로 카운트를 원하는 문자 기준으로 나눠 분리된 배열의 'length값에 -1' 한 결과를 반환하면 된다.

 

2) 문자열이 아닌 숫자인경우

 

let num = 1009800098;

String( num ). split( 0 ) . length - 1;

 

num 변수 속 0의 갯수 카운팅하기 위해 문자열로 변환해주고( String( ), .toString( ) ) -> split()함수로 카운트를 원하는 문자 기준으로 나눠 분리된 배열의 'length값에 -1' 한 결과를 반환하면 된다.

 

 

3) 숫자를 전부 돌며 0-9의 값이 각각 몇개 들어있는지 출력하는 법

 

for (let i = 0; i <= 9; i++) {
  console.log(num.split(i + '').length - 1);
}

 

문자열로 변환한 num을 for문으로 돌되 split()함수로 원하는 문자 기준으로 나눠 분리된 배열의 length값에 -1 한 결과값을 반환받을 수 있다.

 


문자열, 숫자, 배열 전체가 특정 조건 만족하는지 확인해야할 때

우선 every() _ 배열 안의 모든 요소가 주어진 판별 함수를 통과하는지 테스트한 후 Boolean 값을 반환합니다.

 

한 문자열을 한 문자별로 돌면서 내부의 값을 확인하고 싶을 때 every 함수를 통해 결과를 확인할 수 있으며, 숫자인 경우도 마찬가지로 배열로 변환시켜 every 함수로 특정 조건 만족 유무에 대한 결과를 true, false로 알아볼 수 있다.

 

간단한 변환 과정을 거쳐 문자일 경우, 숫자일 경우 배열로 변환해 every 함수만 적용시켜준다면 끝!

문자 -> 배열 변환 (split( )) -> every 함수 
숫자 -> 문자 변환 (toString( ))-> 배열 변환 (split( )) -> every 함수

 

1) 문자열 -> 배열로 (split('')) -> 배열 요소 하나씩 돌며 문자 값의 조건 통과여부 확인

str.split("").every((str) => !isNaN(str))

 

2) 숫자 -> 문자열 -> 배열로 (split('')) -> 배열 요소 하나씩 돌며 조건 통과여부 확인

String(num).split("").every((number) => !isNaN(number))

 

여기서 isNaN() 함수는 is Not a Number 즉 숫자가 아닌 것을 판별하기 위한 함수로, 숫자인 경우 false, 그외 true를 반환한다. 반대로 !isNaN()을 사용하여 숫자인지 아닌지를 확인할 수 있다.

추가로 Number함수를 통해 Number("안녕하세요") 문자열을 작성할 경우 NaN 값을 출력한다.

console.log(isNaN("100F"));		// true
console.log(isNaN("안녕하세요"));	// true
console.log(Number("안녕하세요"));	// NaN

console.log(isNaN(0.0314E+2));		// false
console.log(isNaN(32));			// false

 

🐤 비슷하게 문자열이나 숫자를 배열로 변환하여 적용시킬 수 있는 함수들

1. forEach() 함수는 주어진 배열을 순회하면서, 배열의 원소들로 주어진 callback함수를 실행

2. include() 함수는 주어진 배열에 특정 값이 포함되는지 여부를 검사


3. indexOf() 함수는, 배열에서 특정값이 처음으로 나타나는 index를 리턴하며존재하지 않을 경우 -1을 반환

4. filter() 함수는 특정 조건에 부합하는 배열의 모든 값을 배열 형태로 리턴

5. map() 메서드는 배열 내의 모든 요소 대해 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환

Posted by Ang