입력받은 문자열을 숫자로 바꾸기
function strToInt(str) {
let answer = Number(str);
retrun answer;
}
라고 풀었는데, (사실 다른 건 생각도 안 났어...)
function strToInt(str){
return str/1
}
// 아래는 테스트로 출력해 보기 위한 코드입니다.
console.log(strToInt("-1234"));
다른 사람이 이렇게 푼 게 있었다.
이게 대체 뭘까...? str을 1로 나누면 자동으로 형변환이 되는 건가?
동적 언어의 핵심을 찌른다는 댓글이랑 사칙연산되면서 문자가 자동으로 파싱된다는 댓글이 있다.
#동적언어 #파싱
배열에서 원소 제거하기
1. 배열 전체 길이 0으로 주기 -> 길이 0의 빈 배열이 된다.
array.length = 0;
let array1 = ['1', '2'];
let array2 = array1;
array1.length = 0;
//array2.length = 0;
2. 빈 배열 할당하기
array = [];
let array1 = ['1', '2'];
let array2 = array1;
array1 = [];
//array2 = ['1', '2'] 계속 원래의 배열을 참조
이 경우는 array1에 새로운 배열을 할당하는 것이기 때문에 array2가 참조하고 있던 배열과는 상관없이 빈 배열로 할당되는 것
3. shift() 로 배열의 첫 번째 값 삭제 (unshift() 는 맨 앞에 값 추가)
4. pop() 로 배열의 맨 뒤 값 삭제 (push() 는 맨 뒤에 값 추가)
5. splice() 로 배열의 중간에 값 삭제 (중간에 값 추가로 가능)
array = ['1', '2', '3'];
array.splice(1, 1); // 첫번째 인덱스부터 한 개 원소 제거
//array = ['1','3']
반복문과 조건문(if), splice() 함수를 이용하여 특정값을 삭제하는 코드입니다.
splice() 함수를 사용하면, 원본 배열의 원소가 삭제되고 배열의 길이가 변하기 때문에
splice() 함수를 사용해서 원소를 1개 삭제한 후에는,
배열의 index를 참조하는 i의 값을 하나 감소시킨 것(i--)에 주의하세요.
출처: https://hianna.tistory.com/489 [어제 오늘 내일]
6. filter() 로 특정 조건에 부합하는 원소만 모아서 새로운 배열을 만들어 리턴
같은 숫자는 싫어
연속적으로 나타나는 숫자는 하나만 남기고 전부 제거
제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 한다.
function solution(arr)
{
var answer = [];
for(let i = 0; i < arr.length; i++) {
if(arr[i] === arr[i+1]) {
//제거를 어떻게 하지?
arr.splice(i,1);
i--
}
}
answer = arr;
// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
console.log('Hello Javascript')
return answer;
}
효율성 빵점으로 통과하지 못했다... ㅎㅎ
문자열 함수
String 메소드
String 인스턴스의 값은 변경될 수 없다(immutable). -> 모든 String 메소드는 결괏값으로 새로운 문자열을 생성하여 반환한다.
string.indexOf() - 해당하는 문자열의 인덱스 찾기, 찾을 수 없을 때는 -1 반환
string.slice() - 시작 인덱스부터 종료 인덱스 바로 앞까지의 문자열만을 추출하여 새로운 문자열 반환
음수 인덱스는 뒤에서부터 시작함
string.slice(-4, 0);
뭘까 이거
0103334444-> 103334444가 돼서... 그다음엔 어떻게 된 거지?
아무튼 인자를 문자열로 전달을 해야 한다..
function hide_numbers(s) {
return s.replace(/\d(?=\d{4})/g, "*");
}
다른 사람 풀이, 정규식을 사용한 거라는데...
function solution(phone_number) {
let answer = '';
let len = phone_number.length;
let four = phone_number.slice(-4,len);
//let star = phone_number.substr(0, len-4);
let star = ""
for(let i = 0; i < len-4; i++) {
star += '*';
}
answer = star + four;
return answer;
}
난 좀 길고... 길고 좀 그래
같은 숫자는 싫어
function solution(arr)
{
var answer = [];
answer[0] = arr[0];
arr.forEach(function(el, index, arr) {
if(!(answer.includes(el))) {
answer.push(el)
}
})
console.log(answer)
// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
console.log('Hello Javascript')
return answer;
}
시도는 좋았다고 생각해...
문제를 완전 제대로 안 읽었지, , ,
forEach, map을 자유롭게 쓸 줄 모름
function solution(arr) {
const answer = [];
for (let i = 0; i < arr.length; ++i ) {
console.log(i, arr[i], arr[i + 1]) // 찍어봐...
if( arr[i] !== arr[i+1] {
answer.push(arr[i])
}
return answer;
}
forEach로 풀어보고 싶어
'프론트엔드✏️ > 코드캠프' 카테고리의 다른 글
ColorHighlight, emotion 폰트 추가 (0) | 2022.05.18 |
---|---|
220516 프론트엔드 부트캠프 8일차 : container, presenter (0) | 2022.05.17 |
try ... catch (트라이 캐치) (0) | 2022.05.15 |
async/await. 동기함수 비동기함수 (0) | 2022.05.15 |
Template literals(템플릿 리터럴) (0) | 2022.05.15 |