TIL
                
              23.04.10 TIL
                DDINYOUNG
                 2023. 4. 17. 01:15
              
                          
            문자열을 비교해서 겹치는 문자열 중 첫번째 문자열만 return하는 문제
처음 생각했던 방법은 includes를 사용해서 겹치는 문자열만 push해 주는 방법을 생각했다.
function solution(a) {
    let arr = a.split(",");
    // console.log(arr)
    let arr2 = [];
    for (let a of arr) {
        if(!arr2.includes(a)){
            arr2.push(a);
        }
    }
    return arr2
}
console.log(solution("4,2,3,3,2,3,4,1,2,3")); // ["4","2","3","1"]
페어 프로그래밍 하면서 팀원이 작성한 코드는 filter를 사용해서 해당 index의 값과 같은 배열을 arr2에 담아주는 코드로 작성했다.
근데 처음에는 if조건문으로 값을 push 해주도록 작성했더니 자꾸 입력한 값 그대로 전체 배열이 튀어나왔다.
function solution(a) {
    let arr = a.split(",");
    //   console.log(arr);
    if(arr.filter((b, i) => arr.indexOf(b) === i)){
				arr2.push(b);
		};
}console.log(solution("4,2,3,3,2,3,4,1,2,3")); // ["4,2,3,3,2,3,4,1,2,3"]
그래서 arr2에 바로 filter된 배열을 담을 수 있도록 작성했더니 제대로 값이 도출되었다.
function solution(a) {
    let arr = a.split(",");
    //   console.log(arr);
    let arr2 = arr.filter((b, i) => arr.indexOf(b) === i);
    return [...arr2].map((a) => parseInt(a));
}
console.log(solution("4,2,3,3,2,3,4,1,2,3")); // [4,2,3,1]
오늘의 한줄평 : filter 같이 새로운 배열을 반환해주는 메소드는 변수이름을 할당해주어야한다.