글자분석함수/ forEach

hyerin·2023년 3월 21일
0

string을 주면 알파벳과 그 개수를 반환하는 function을 만들어보자
예를 들면, 'apple' 을 주면 {"a": 1, "p": 2, "l" : 1 ,"e" : 1}
를 반환하는 것이다.

순서는 이렇다.

  1. 글자 별로 반복문을 쓴다
  2. 객체에 해당 문자가 있으면 값을 +1해주고
  3. 객체에 없으면 해당 문자를 새롭게 1 추가해준다.

우선 객체로 반환해주어야 하기 때문에 값을 추가할
빈객체를 만들어주자(answer)

반복문을 쓰려면 string이 아닌 array로 바꿔주어야 한다.
스프레드 문법을 (...)사용하면 쉽게 array로 바꿀 수 있다.
반복문은 array함수인 forEach를 사용해 보자
forEach의 사용법이다

1. 화살표 함수
forEach((el) => {})
2.일반 콜백함수 사용
forEach(function(el){ } );
3.함수를 변수로..
forEach(함수이름);

forEach는 배열을 반복문 돌릴 때 유용하다.

const items = ['first', 'second', 'third'];
const copyItems = [];
for(let i = 0 ; i < items.length; i++){
copyItems.push(items[i]);
]
//forEach문을 쓰면 더 간편해진다
const items = ['first', 'second', 'third'];
const copyItems = [];
items.forEach(e => {copyItems.push(e);})

forEach를 사용해 만든 코드는 다음과 같다.

function analyzeString(str){
  let answer = {};
  [...str].forEach(function(e){
    //만약 값이 있다면 = value가 0을 넘는다면
     if(answer[e] > 0 ) {
       answer[e] += 1;
    //만약 값이 없다면 해당 키와 값1을 추가
	} else {
  	   answer[e] = 1;
	}
  })
  console.log(answer);
}

함수를 사용해보면 결과가 잘 나오는 것을 확인할 수 있다.

analyzeString('banana');
//{"b" : 1, "a" : 3, "n" : 2}
const fruits = ['banana','apple','banana','apple','banana'];
const count = fruits.reduce((acc,cur)=> {
  //첫 순회시 acc는 {}가 되고, cur은 'banana'이다
  //{}에 cur가 키값으로, 요소의 개수를 프로퍼티 값으로 할당한다.
  //원래 값이 있으면(acc[cur])에 1을 더하고
  //없으면 (0) 1을 더한다.
    acc[cur] = (acc[cur] || 0) + 1;
    return acc;
  //빈객체가 초기값이 된다
}, {} );
console.log(count); //{ banana: 3, apple: 2 }
profile
글쓰기의 시작은 나를 위해, 끝은 읽는 당신을 위해

0개의 댓글