문자열을 입력받아 순서가 뒤집힌 문자열을 리턴해야 합니다.
'reenigne erawtfos taerg a eb lliw uoy'을(를) 입력받은 경우, 'you will be a great software engineer'을(를) 리턴해야 합니다
function firstReverse(str) {
// TODO: 여기에 코드를 작성합니다.
// let output=''
// if(str==='') return ''
// for(let i=str.length-1; i>=0; i--){
// output+=str[i]
// }
// return output
return str.split('').reverse().join('');
}
문자열을 입력받아 문자열을 구성하는 각 단어의 첫 글자가 대문자인 문자열을 리턴해야 합니다.
'what a wonderful life'을(를) 입력받은 경우, 'What A Wonderful Life'을(를) 리턴해야 합니다
function letterCapitalize(str) {
let newStr = str.split(' ');
for (let i = 0; i < newStr.length; i++) {
if (newStr[i].length > 0) {
newStr[i] = newStr[i][0].toUpperCase()+newStr[i].slice(1)
}
}
return newStr.join(' ')
}
💡 Part 1: 항공권 목록 필터링
🧩 Main 컴포넌트에서 항공편을 조회합니다
✕ Main 컴포넌트 내 search 함수는 검색 조건을 담고 있는 상태 객체 condition을 업데이트해야 합니다 (59 ms)
🧩 Search 컴포넌트를 통해 상태 끌어올리기를 학습합니다
✓ 검색 화면이 Search 컴포넌트로 분리되어야 합니다 (6 ms)
✕ Search 컴포넌트에는 상태 변경 함수 search가 onSearch props로 전달되어야 합니다 (13 ms)
✕ 상태 변경 함수 search는 Search 컴포넌트의 검색 버튼 클릭 시 실행되어야 합니다 (46 ms)
const search = ({ departure, destination }) => {
if (condition.departure !== departure || condition.destination !== destination) {
console.log('condition 상태를 변경시킵니다')
setCondition({departure, destination})
}
}
...
<Search onSearch={search}/>
function Search({onSearch}) {
const [textDestination, setTextDestination] = useState('')
const handleChange = (e) => {
setTextDestination(e.target.value.toUpperCase())
}
const handleKeyPress = (e) => {
if (e.type === 'keypress' && e.code === 'Enter') {
handleSearchClick()
}
}
const handleSearchClick = () => {
console.log('검색 버튼을 누르거나, 엔터를 치면 search 함수가 실행됩니다')
onSearch({departure: 'ICN', destination: textDestination})
// TODO:
}