자바스크립트 문법 정리📑

hare·2022년 12월 1일
0

js-tips

목록 보기
1/5

스터디나 특강, 기타 구글링을 하면서 하나하나 줍줍한 자스 지식을 여기에 한데 모아보기로..

Math.max

Math.max(arg1,...,argN) : 가장 큰 수를 반환
Object.assign(dest, src1,...,srcN) : src1..srcN의 프로퍼티를 dest로 복사

  • 깊은복사 얕은복사에서 본듯..

스프레드 문법

✅ 함수의 매개변수로 배열을 전달 -> 배열을 통째로 매개변수에 넘기기

배열의 길이가 길 수도, 빈 배열일 수도 있기 때문에 수동으로 나열하기에는 한계가 있음

  • Math.max()는 인수로 숫자 타입을 받기때문에 에러 발생
let arr = [3, 5, 1];

alert( Math.max(arr) ); // NaN
  1. 스프레드 문법을 사용하면 숫자를 인수로 받는 Math.max()에 배열을 전달할 수 있다!
let arr = [3, 5, 1];

alert( Math.max(...arr) );
  1. 이터러블 객체들과 일반 값과 혼합해 사용할 수 있음 WOW
let arr1 = [1, -2, 3, 4];
let arr2 = [8, 3, -8, 1];

alert( Math.max(1, ...arr1, 2, ...arr2, 25) ); // 25
  1. 배열을 합칠 때도 사용
let arr = [3, 5, 1];
let arr2 = [8, 9, 15];

let merged = [0, ...arr, 2, ...arr2];

alert(merged); // 0,3,5,1,2,8,9,15 (0, arr, 2, arr2 순서로 합쳐집니다.)
  1. 문자열->배열 전환에도 사용
let str = "Hello";

alert( [...str] ); // H,e,l,l,o

💡문자열에 for..of를 사용하면 문자열을 구성하는 문자가 반환

const array1 = ['a', 'b', 'c'];

for (const element of array1) {
  console.log(element);
}

// expected output: "a"
// expected output: "b"
// expected output: "c"

Array.from

: 스프레드 문법과 동일하게 작동
✅ 배열로 변환할 때 보편적으로 사용함
❔ 유사배열객체, 이터러블 객체에 다 사용가능해서~

let str = "Hello";

// Array.from은 이터러블을 배열로 바꿔줍니다.
alert( Array.from(str) ); // H,e,l,l,o

Array.sort()

: 따로 순서 정의가 없으면 유니코드 순서로 정렬

arr.sort([compareFunction])
: 정렬 순서를 정의하는 함수
return 정렬된 배열

compareFunction(a, b) < 0
➡ a가 먼저
compareFunction(a, b) = 0
➡ a,b 변경 없이 다른 요소에 대해 정렬
compareFunction(a, b) > 0
➡ b를 a보다 낮은 인덱스로 정렬

function compare(a, b) {
  if (a is less than b by some ordering criterion) {
    return -1;
  }
  if (a is greater than b by the ordering criterion) {
    return 1;
  }
  // a must be equal to b
  return 0;
}

❔ 숫자 비교 경우

function compareNumbers(a, b) {
  return a - b;
}

➡ 오름차순 정렬

✅ 함수식(클로저)과 함께 사용

var numbers = [4, 2, 5, 1, 3];
numbers.sort(function(a, b) {
  return a - b;
});
console.log(numbers);

// [1, 2, 3, 4, 5]

코테 문제 sort 사용 예시

function solution(array) {
    var answer = 0;
    array.sort(function(a,b){
       return a-b;
    });
    answer = array[Math.floor(array.length / 2)];
    return answer;
}
profile
해뜰날

1개의 댓글

comment-user-thumbnail
2022년 12월 2일

어제 하루도 공부하시느라 너무 고생하셨어요!

답글 달기