<제출 답안>
function solution(s) {
let answer;
onlyOneArr = [...new Set(s)];
answer = onlyOneArr.join("");
return answer;
}
console.log(solution("ksekkset"));

답은 나왔지만 Set 함수 사용은 아래의 문제를 야기한다.
제시하신 코드는 중복 문자를 제거하는 목적을 달성하지만, 중복된 문자를 제거하고 출력할 때 원래 문자열의 순서를 유지하지 않습니다. Set 객체는 중복을 제거하지만, 입력된 문자열에서 문자의 최초 출현 위치를 기반으로 순서를 재정렬하지는 않습니다.
수정
indexOf로 글자의 존재유무를 파악한 뒤, -1(즉, 처음 본 글자라면) 새롭게 answer에 추가.
function solution(s) {
let answer = "";
for (let i = 0; i < s.length; i++) {
// 현재 문자가 answer에 없으면 추가
if (answer.indexOf(s[i]) === -1) {
answer += s[i];
}
}
return answer;
}
console.log(solution("ksekkset"));
객체를 다루는 메소드들
위와 같은 key-value 쌍을 가진 객체 호출은 가능하지 않다.
console.log([...{ one: "1" }]);
아래처럼 반복문 적용이 가능한 형태여야 스프레드 연산자 사용이 가능하다.

, 스프레드 연산자(...)는 이터러블(iterable) 객체에 대해서만 작동하기 때문입니다. 이터러블 객체는 배열, 문자열, Map, Set 등과 같이 반복 가능한 요소를 가지고 있어야 합니다. 객체는 기본적으로 이터러블 프로토콜을 따르지 않으므로, 스프레드 연산자를 직접 사용할 수 없습니다.
스프레드 연산자를 사용해 객체의 속성을 배열로 변환하려면,
대신 Object.keys(), Object.values(), 또는 Object.entries() 메서드를 사용하여
객체의 키, 값, 또는 키-값 쌍을 배열로 변환한 다음 스프레드 연산자를 사용할 수 있습니다.
console.log(Object.values({ one: "1" })); // ["1"]
console.log(Object.keys({ one: "1" })); // ["one"]
console.log(Object.entries({ one: "1" })); // [["one", "1"]]
'🗃️javascript > 코테 프레임 문제' 카테고리의 다른 글
2-4 점수계산(O) (0) | 2024.04.15 |
---|---|
1-17 중복단어제거(△) (0) | 2024.04.11 |
1-15 가운데 문자 출력(O) (0) | 2024.04.11 |
1-14 가장 긴 문자열(△) (0) | 2024.04.10 |
5-1 두 배열 합치기 (0) | 2023.09.26 |