17일차 (12-30-2020)

조상래·2020년 12월 30일
0

코드스테이츠

목록 보기
18/73

조금 쳐지는 것 같다. 해결 안되는게 있으면 뭔가 멘탈이 나가버리는듯한 느낌? 그렇게 고전하다가 해결하면 기분은 좋긴하다! 힘내자!

오늘은 어제 풀던 언더바를 계속 풀었다. 어제보다는 잘 풀리는 느낌? 뭔가 점점 내 것이 되어가는 느낌이다.

어찌하다보니 오늘은 for문에 집착을 하였다. 내가 직접 만든 each를 쓰니까 뭔가 맘대로 안되는 것이었다. 내가 만든건데 왜 내맘대로 못하는 것인가... ㅠㅠㅠㅠㅠ 여튼 그래서 for문을 많이 쓰게 되었는데 쓰면서 응용이 조금 늘었다.

한가지만 말해보겠다. 만약, 여러가지 배열들이 있고 만약 그 배열 안에 요소 하나가 모든 배열에 존재 한다면 그 요소들로 새로운 배열을 만들어야 한다고 가정하자.

let arr1 = ['a', 'b'];
let arr2 = ['a', 'c'];

간단하게 위 두가지 배열이 있다고 하면 우리가 산출 해야하는 결과는 바로 새로운 배열 ['a']이다.

첨에 어떻게 이걸 짧고 오류가 없게 코드를 짤 수 있을까 고민을 했는데. 나의 능력밖의 고민을 하였다... 일단 어떻게든 돌아가게만 만들어보자라는 마인드로 고민을 다시했고 그래서 나온 결론은 이것다.

첫 번째 배열을 기준으로 다른 배열의 요소를 비교해서 만약 그 요소가 존재 한다면 count up 아니면 무시 비교가 다 끝났을 때 배열의 개수와 count가 같다면 그 요소는 모든 배열에 존재하는 것!

아무것도 아닌 얘기를 너무 웅장하게 썼다...

function intersection() {
  let firstArr = arguments[0];
  let result = [];

  for (let j = 0; j < firstArr.length; j += 1) {
    let count = 1;        
    for (let n = 1; n < arguments.length; n += 1) {
      for (let i = 0; i < arguments[n].length; i += 1) {
        if (firstArr[j] === arguments[n][i]) {
          count += 1;
        } else {
          continue;
        }
        if (count === arguments.length) {
          result.push(firstArr[j]);
        }
      }
    }
  }
  return result;
};

너무 길고 복잡한 무려 3중 for 반복문이다...

핵심은 for문 안에 새로운 변수 count를 써줘서 한번 순회할 때 마다 자동으로 1로 초기화 하는 것! 예전의 나였으면 밖에다가 따로 변수를 설정해주고 돌 때 마다 count에 1을 할당해줘서 초기화를 시켰을 것이다.

이제 결과를 보자...

재밌다!!!! 재밌어!!!!

만약 다른 케이스의 배열을 넣었을 때 오류가 날 수 있을 것이다... 그래도 이정도 발전한건 스스로를 칭찬한다! 자바스크립트의 다른 요소들을 내 맘대로 유연하게 사용할 수 있는 날이 오길....

profile
Codestates Full IM26기 수료

0개의 댓글