한주간 진행 된 알고리즘주차가 마무리됐다.
그제 모의고사에서 리플잇으로 문제푸는 법을 약간 헤맸어서 자신감이 떨어진 상태였는데(그냥 콘솔만 밑에다 더 찍어주면 되는데 안쓰니까 그 쉬운것도 몰랐음) 오늘 봤던 시험 끝나자마자 잘보든 못보든 몸이 바로 늘어진다.😭 (후일담_알고리즘 테스트에 우리반 전원이 통과했다는 소식!! 멋져!🎊🎉🎊🎉)
오늘은 지난 일주일 간 알고리즘을 풀면서 30문제 정도를 풀면서 자주 사용했던 매서드를 정리하고자 한다.
str.indexOf(찾고자하는 문자열[, 찾기 시작하는 위치를 나타내는 인덱스 값_옵션])
Math.pow(2, 3) // 2의3승
Math.sqrt(9); // 3
const a = [1, 2, 3];
console.log(a); // [1, 2, 3]
a.reverse();
console.log(a); // [3, 2, 1]
👉 예외
let str = parseInt('123가나다') ;
console.log( str ) ;
// 123
let str = parseInt('가나다123') ;
console.log( str ) ;
// NaN
👉 Number와 차이점
let test = '2020년도';
parseInt(test); // 2020
Number(test); // NaN
let test = '10.12345';
parseInt(test); // 10
Number(test); // 10.12345
parseFloat(test); // 10.12345
const months = ['March', 'Jan', 'Feb', 'Dec'];
months.sort();
console.log(months);
=> ["Dec", "Feb", "Jan", "March"]
const array1 = [1, 30, 4, 21, 100000];
array1.sort();
console.log(array1);
=> [1, 100000, 21, 30, 4]
👉 오름차순
function compareNumbers(a, b) {
return a - b;
}
👉 내림차순
function compareNumbers(a, b) {
return b - a;
}
str.split([separator[, limit_옵션]])
var myString = 'Hello World. How are you doing?';
var splits = myString.split(' ', 3);
console.log(splits);
=>["Hello", "World.", "How"]
👉 getMonth() : 월 값을 현지 시간에 맞춰 반환 (월은 0부터 시작)
const moonLanding = new Date('July 20, 69 00:20:18');
console.log(moonLanding.getMonth());
// expected output: 6
👉 getDate() : 주어진 날짜의 현지 시간 기준 일을 반환
const birthday = new Date('August 19, 1975 23:15:30');
const date1 = birthday.getDate();
console.log(date1);
// expected output: 19
👉 getDay() : 주어진 날짜의 현지 시간 기준 요일을 반환 (0은 일요일)
const day1 = birthday.getDay();
// Sunday - Saturday : 0 - 6
console.log(day1);
// expected output: 2
👉 getFullYear() : 주어진 날짜의 현지 시간 기준 연도를 반환
const moonLanding = new Date('July 20, 69 00:20:18');
console.log(moonLanding.getFullYear());
// expected output: 1969
const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
const result = words.filter(word => word.length > 6);
console.log(result);
// expected ["exuberant", "destruction", "present"]
const array1 = [1, 4, 9, 16];
// pass a function to map
const map1 = array1.map(x => x * 2);
console.log(map1);
// [2, 8, 18, 32]
👉 예제1
var numbers = [1, 4, 9];
var roots = numbers.map(Math.sqrt);
// roots는 [1, 2, 3]
// numbers는 그대로 [1, 4, 9]
👉 예제2
var kvArray = [{key:1, value:10},
{key:2, value:20},
{key:3, value: 30}];
var reformattedArray = kvArray.map(function(obj){
var rObj = {};
rObj[obj.key] = obj.value;
return rObj;
});
// reformattedArray는 [{1:10}, {2:20}, {3:30}]
// kvArray는 그대로
// [{key:1, value:10},
// {key:2, value:20},
// {key:3, value: 30}]
console.log(Math.max(1, 3, 2));
// expected output: 3
console.log(Math.max(-1, -3, -2));
// expected output: -1
const array1 = [1, 3, 2];
console.log(Math.max(...array1));
// expected output: 3
Math.min()
함수는 주어진 숫자들 중 가장 작은 값을 반환
Math.abs()
주어진 숫자의 절대값을 반환
x가 양수이거나 0이라면 x를 리턴하고, x가 음수라면 x의 반대값, 즉 양수를 반환
Math.abs('-1'); // 1
Math.abs(-2); // 2
Math.abs(null); // 0
Math.abs(''); // 0
Math.abs([]); // 0
Math.abs([2]); // 2
Math.abs([1,2]); // NaN
Math.abs({}); // NaN
Math.abs('string'); // NaN
Math.abs(); // NaN
array.splice(start[, 제거할요소[, 추가할요소1[, 추가할요소2[, ...]]]])
const months = ['Jan', 'March', 'April', 'June'];
months.splice(1, 0, 'Feb');
// inserts at index 1
console.log(months);
// expected output: Array ["Jan", "Feb", "March", "April", "June"]
months.splice(4, 1, 'May');
// replaces 1 element at index 4
console.log(months);
// expected output: Array ["Jan", "Feb", "March", "April", "May"]
arr.slice([0을 시작으로 하는 추출 시작점 인덱스[, 추출을 종료 할 0 기준 인덱스]])
let fruits = ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango']
let citrus = fruits.slice(1, 3)
// fruits contains ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango']
// citrus contains ['Orange','Lemon']
var maxCallback = ( acc, cur ) => Math.max( acc.x, cur.x );
// initialValue 없이 reduce()
[ { x: 22 }, { x: 42 } ].reduce( maxCallback ); // 42
[ { x: 22 } ].reduce( maxCallback ); // { x: 22 }
[ ].reduce( maxCallback ); // TypeError
[0, 1, 2, 3, 4].reduce(function(이전반환값/첫번째호출, 처리할현재요소, 처리할현재요소인덱스, reduce()를호출한배열) {
return accumulator + currentValue;
});
[0, 1, 2, 3, 4].reduce( (prev, curr) => prev + curr );