Javascript 알고리즘 100일 챌린지를 통해
기본적인문제 풀이시 몰랐던 문법요소 정리
유튜브 참고 :
https://www.youtube.com/watch?v=RMmOU2u-_as&list=PLkfUwwo13dlWZxOdbvMhkzhAowaiEjuGS
Array값에 요소값 채우기 (fill & map)
let arr = Array(10).fill().map((_,i)=> i);
//[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
누적값 구하기 (reduce)
const initialValue = 0;
const sumWithInitial = [1,2,3,4,5].reduce(
(accumulator, currentValue) => accumulator + currentValue,
initialValue
);
//10
정수 부분만 추출 (~~)
let result = 10/4;
console.log(~~result);
// 2
Queue관련 함수
// shift 메서드는 배열에서 첫 번째 요소를 제거하고, 제거된 요소를 반환합니다
const array = [1,2,3];
const shift = array.shift();
// array : [2,3] / shift : 1
// unshift() 메서드는 새로운 요소를 배열의 맨 앞쪽에 추가하고, 새로운 길이를 반환합니다.
const unshift = array.unshift(4,5)
// array : [ 4, 5, 2, 3 ] / unshift : 4
// pop() 메서드는 배열에서 마지막 요소를 제거하고 그 요소를 반환합니다.
const pop = array.pop()
// array : [ 4, 5, 2 ] / pop : 3
// push() 메서드는 배열의 끝에 하나 이상의 요소를 추가하고, 배열의 새로운 길이를 반환합니다.
const push = array.push(10)
// array : [ 4, 5, 2, 10 ] / push : 4
문자열을 배열로
/* 전개구문 ( Spread Operator ) */
const str = 'hellow hi';
const arr1 = [...str];
/* Array.from() 메서드는 유사배열객체(array-like object)나 반복가능한객체(iterable object)를
얕게 복사해 새로운 Array객체 생성 */
const arr2 = Array.from(str);
// arr1 / arr2 결과 값 : ['h', 'e', 'l','l', 'o', 'w',' ', 'h', 'i']
nullrish (??) 연산자
/* 해당 값이 null이 아니라면 왼쪽 피연산자, null이면 오른쪽 피연산자를 반환 */
const num1 = 10;
const result1 = num1 ?? 0;
// result1 : 10
const num2 = null;
const result2 = num2 ?? 0;
// result2 : 0
Set 관련
/* set은 어느정도 순서를 보장 */
const set = new Set([1,2]);
set.add(3);
set.add(4);
set.add(5);
set.delete(2);
// set : Set(4) { 1, 3, 4, 5 }
/* set객체는 이터러블이기 때문에 for ..of문으로 순회할수있고, 스프레드문법과, 배열 처리 가능 */
const arr = [...set];
// arr : [ 1, 3, 4, 5 ]
문자열 숫자로 형변환
/* 변수앞에 +붙이면 정수로 형변환 */
const str = "123";
const num2 = +str;
// num2 type is number
Array.some과 Array.every
const array = [1, 3, 5, 6];
/* some() 메서드는 배열 안의 어떤 요소라도 조건함수에 적어도 하나라도 부합시 return True */
const result1 = array.some((v)=> v % 2 === 0)
/* every() 메서드는 배열 안의 모든 요소가 조건함수에 부합시 return True */
const result2 = array.every((v)=> v % 2 !== 0)
// result1 : true, result2 : false