출처)https://school.programmers.co.kr/learn/courses/30/lessons/12930
function solution(s) {
let arr = s.split(' ');
let arr2 = arr.map(word => {
let eachWordArr = word.split('');
return eachWordArr.map((val, idx) => (idx % 2 == 0) ? val.toUpperCase() : val.toLowerCase()).join('');
});
return arr2.join(' ');
}
function toWeirdCase(s){
//함수를 완성해주세요
return s.toUpperCase().replace(/(\w)(\w)/g, function(a){return a[0].toUpperCase()+a[1].toLowerCase();})
}
정규식을 이용한 풀이. /(\w)(\w)/g
로 연속된 두 문자를 각각 그룹으로 할당하고 첫번째를 대문자로 두번째를 소문자로 변환하는 로직을 사용하고 있다. 생각지도 못했던 풀이인데 정말 잘 풀어낸것 같아서 감탄이 나온다.
모달을 쉽게 구현할 수 있게 해주는 서드파티 라이브러리.
직접 커스텀 모달을 만드는 시간을 절약할 수 있다.
yarn add sweetalert2
import Swal from "sweetalert2";
Swal.fire()
로 호출할 수 있다.const deleteBtnHndlr = () => {
Swal.fire({
title: "삭제하시겠습니까?",
icon: "warning",
showDenyButton: true,
confirmButtonText: "삭제",
denyButtonText: `취소`,
}).then((result) => {
if (result.isConfirmed) {
dispatch(deleteTodo(todoId));
navigate("/");
} else if (result.isDenied) {
return;
}
});
};
삭제 버튼 눌림을 핸들링 하는 함수 내에서 사용해 보았다.
Swal.fire() 안에 객체를 전달하고 그 객체 안에서 각종 설정을 할 수 있게 되어있다.
그 이후 then 블럭으로 이동하는데 if/else if 문을 이용해서 서로 다른 버튼이 눌렸을 때의 분기 처리를 할 수 있다.
Swal.fire({
title: "Good job!",
text: "You clicked the button!",
icon: "success"
});
보다 간단한 예시. 버튼이나 모달창 이후 동작하는 별도의 코드는 없고 정보를 사용자에게 전달하는 용도로 사용할 수 있다.
실제로 가능한 설정의 종류나 사용방법이 무척 방대한데 공식문서가 친절하게 나와있는 편이니 사용할때마다 들어가서 확인하고 용도에 맞게 사용하면 좋을 것 같다.