TIL 20 | JS replit - for문, 데이터타입, number-string변환
개념을 이해했다고 생각했지만, 문제를 풀 때 배웠던 것들 중 선택하고 조합하여 문제풀이에 활용하는 것이 어렵게 느껴졌다. 오랜 시간 고민하고 해결했던 문제들을 정리하고자 한다. 갑자기 더 좋은 아이디어가 떠오르면 다시 돌아와서 풀어보자!🤙
😵 for 문
findSmallestElement
[문제]
findSmallestElement
의arr
인자는 숫자 값으로만 이루어진 배열입니다.arr
의 값들 중 가장 작은 값을 리턴 해주세요.- 만일
arr
가 비어있으면 0을 리턴 해주세요. - 예를 들어, 다음과 같은 배열이 인자(input)으로 들어왔다면 1이 리턴 되어야 합니다.
[20, 200, 23, 1, 3, 9]
[풀이]
function findSmallestElement(arr) {
// your code here
//arr가 비어있으면 0을 리턴
if (arr.length === 0) {
return 0;
}
//arr값들 중 가장 작은 값을 리턴
else {
let min = arr[0];
for(let i in arr) {
if(min>arr[i]) {
min = arr[i]
}
}
return min;
}
}
변수 min을 arr[0]으로 설정하고(가상으로), arr를 순회하며 더 작은 값이 있을 시 min을 수정하도록 하는 방법으로 문제를 해결했다. 이 방법으로 가장 큰 값을 리턴하려면?
let max = arr[0];
for(let i in arr) {
if(max<arr[i]) {
max = arr[i]
}
}
return max;
😵 데이터 타입
대문자 < --- > 소문자
let name = 'Dabin An';
let upperName = name.toUpperCase();
let lowerName = name.toLowerCase();
console.log(name); // Dabin An
console.log(upperName); // DABIN AN
console.log(lowerName); // dabin an
.index of
let name = 'Dabin An';
let upperName = name.toUpperCase();
let lowerName = name.toLowerCase();
console.log(name); // Dabin An
console.log(upperName); // DABIN AN
console.log(lowerName); // dabin an
특정 텍스트의 포함 유무 및 위치 확인
let name = 'dabin an'
name.indexOf('b') // 2
name.indexOf('a') // 1
index 위치로 알려주고, 해당 텍스트 중 제일 처음 나오는 위치를 알려준다.
여러 데이터 타입의 boolean 값
true
- 문자열 : 비어 있지 않은 모든 문자열
- 숫자 : 0 이 아닌 모든 숫자(length속성 없음)
- 객체: 모든 객체 (
{ }, [ ]
포함)
false
- 문자열 :
" "
(빈문자열) - 숫자 : 0,
NaN
- 객체 :
null
(object) undefined
sliceCityFromAddress
[문제]
sliceCityFromAddress
함수는address
를 인자로 받습니다.address
는 주소를 나타내는 string 입니다.- 주어진 주소가 어느 도시 인지를 찾아 해당 주소에서 도시 부분만 삭제한 새로운 주소를 리턴해 주세요.
- 도시는 무조건 "시" 로 끝납니다. 예를 들어, "서울시".
- "도" 와 "시" 는 주소에 한번 밖에 포함되어 있지 않습니다.
- 예를 들어, 다음과 같은 주소가 주어졌다면;
"경기도 성남시 분당구 중앙공원로 53"
다음과 같은 값이 리턴되어야 합니다:
"경기도 분당구 중앙공원로 53"
[풀이]
천재같은.. 빛과같은.. 팀원분들의 도움으로 모든 경우에 적용될 수 있는 코드를 구현했다.
function sliceCityFromAddress(address) {
return address
//배열로 만들기 [경기도,성남시,분당구,중앙공원로,53]
.split(" ")
//배열의 요소 마지막 자리에 '시'가 없는 요소만 반환
.filter(ele => ele[ele.length - 1] !== "시")
//string 만들기 '경기도 분당구 중앙공원로 53
.join(" ")
}
레플릿 문제를 pass하고도 계속 고민했던 이유는 [00구, 0000로, 00동] 의 0자리에 '시'가 들어가면 그 요소도 filter에서 걸러지기 때문 ㅠㅠ 완성 전 코드는 아래와 같다.
function sliceCityFromAddress(address) {
return address
.split(" ")
.filter(element => element.indexOf("시") === -1)
.join(" ")
}
도움을 요청했을 때, '00시'로 끝나는 배열의 요소를 찾기 위해 문자열의 length로 접근하면 될 것 같다는 조언을 받았고, 같이 실행해본 결과 성공했다! 그저 감탄,,,
😵 string-number
문자열이나 숫자는 '+' 를 사용할 수 있다는 공통점이 있다. 하지만 문자열에는 '-'가 불가능하며, NaN이라는 결과가 반환된다. (문자열에 '-'를 하면 숫자로 변환해서 계산해주지만, 오해의 소지가 있다.)
String -> Number
Number()
let birthYearInput = "1997";
console.log(typeof birthYearInput); //string
var numberBirthYear = Number(birthYearInput);
console.log(typeof numberBirthYear); //number
parseFloat() / parseInt()
parseFloat("1.901");
parseInt("1.901");
parseFloat
- 수로 시작할 때 그 수를 실수로 바꾼다.
- 띄어 쓰기로 여러 개의 수가 있으면 첫번째 수만 바꾼다.
- 공백으로 시작하면 공백은 무시한다.
- 수가 아닌 문자로 시작하면 NaN을 반환한다.
parseInt
- string을 n진법일 때의 값으로 바꾼다. n은 옵션으로 2부터 36까지 입력할 수 있다. 입력하지 않으면 10으로 처리한다.
- string의 처리는 parseFloat()와 거의 같다.
- 소수 부분은 버린다.
- 0x로 시작하면 16진법으로 처리한다.
— 연산의 특성 활용
let numberAsNumber = "1234";
let numberAsString = numberAsNumber - 0;
console.log(numberAsNumber, typeof numberAsNumber);// "1234" "string"
console.log(numberAsString, typeof numberAsString);// 1234 "number"
Number -> String
.toString();
let numberAsNumber = 123;
let numberAsString = numberAsNumber.toString();
console.log(numberAsNumber, typeof numberAsNumber); // 123 "number"
console.log(numberAsString, typeof numberAsString); // "123" "string"
+ 연산의 특성 활용
let numberAsNumber = 1234;
let numberAsString = 1234 + "";
console.log(numberAsNumber, typeof numberAsNumber); //1234 "number"
console.log(numberAsString, typeof numberAsString); // "1234" "string"
Author And Source
이 문제에 관하여(TIL 20 | JS replit - for문, 데이터타입, number-string변환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dabin0219/TIL-20-JS-replitfor문-데이터타입-number-string변환저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)