Today I Learned 2023.02.15. [기초문제 1일차]

Dongchan Alex Kim·2023년 2월 15일
0

Today I Learned

목록 보기
23/31
post-thumbnail

Slice() VS Splice()

  • slice 는 영어로 조각이라는 뜻이다. 반면 splice 는 영어로 이어붙이다라는 뜻이다.
    말그대로 slice는 조각 배열을 복사하여 배열 객체를 반환한다. 반면 splice는 지울 원소 개수, 추가할 원소들을 받아 원본 배열객체를 직접 수정합니다.
  • splice(start, deleteCount, [item..item..]) 는 삭제의 의미로 사용하는 함수이며, 삭제된 자리에 값들을 넣는 기능이 있다.
  • slice(Begin, End) 로 Array의 내용의 시작과 끝을 받아서 추출해주는 기능이다.

Split()

  • 문자열을 특정 구분자로 분할하기 위해서는 split 함수를 사용하면 된다. split 함수를 사용하면 특정 구분자를 기준으로 문자열을 분리하여 결과를 배열로 반환한다.
  • split("구분자 문자열", "최대 배열 크기")로 배열을 재정렬시킬 때 쓰는 함수라도 생각하면 편하다.

행렬의 덧셈과 내적문제에서 이중 map()

function solution(arr1, arr2) {
    return arr1.map((a,i) => a.map((b,j) => b + arr2[i][j]))
}

리스트 안에 리스트가 있을 때는 이중 map()을 써서 각 원소를 접근하는게 참 편했다.
첫번째 map()으로 가장 큰 리스트를 풀어서 작은 리스트에 접근해, 작은 리스트를 해당하는 인자에 또 map()으로 접근해 작은 리스트의 인자를 접근할 수 있는 형식이다.
행렬이나 내적과 같은 복잡한 연산에서 유용하게 쓰였던 메서드였던거 같다.

function solution(arr1, arr2) {
    return arr1.map((a,i) => a*arr2[i]).reduce((a,b)=>a+b)
}

Reduce() 함수

배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고, 하나의 결과값을 반환한다.

  • reduce()에는 누산기가 포함, 배열의 각 요소에 대해 함수를 실행
  • 누적된 값을 출력할 때 용이
const arr2 = [1, 2, 3, 4, 5];
const result2 = arr2.reduce((acc, cur, idx) => { return acc += cur; }, 10);
console.log(result2);  // 25

초기값인 initialValue값 설정할 수 있다.

완주하지 못한 선수...

REF : reduce와 함께 object spread를 사용하는 것이 나쁜 생각인 이유

https://prateeksurana.me/blog/why-using-object-spread-with-reduce-bad-idea/

const arr = [
  { id: 'ironman', name: 'Tony Stark'},
  { id: 'hulk', name: 'Bruce Banner'},
  { id: 'blackwidow', name: 'Natasha Romanoff'},
]
const superheroes = arr.reduce(
  (acc, item) => ({
    ...acc,
    [item.id]: [item.name],
  }),
  {}
);
  • reduce루프는 배열에 대해 n번 실행(n은 배열의 항목 수).
    그리고 여기에는 기존 스프레드 연산자와 함께 보이지 않는 내부 루프가 있다.
  • 내부 루프가 모든 반복에서 n을 2 번 실행하기 때문에 O(n^2)라 말할 수 있다.(정확하진 않음)

...그렇게 난 완주하지 못한 선수가 되었다...ㄸㄹㄹ 내일은 꼭 풀어버려야지.
https://school.programmers.co.kr/learn/courses/30/lessons/42576

profile
Disciplined, Be systemic

0개의 댓글