오늘 뭐했냐/기억하면 좋을 문제들

이차원 배열 만들기 splice(), slice()차이

스스로에게 2023. 6. 14. 10:11
function solution(num_list, n) {
	let result = []
	let arr = []

	for (i = 0; i < num_list.length; i += n) {
    	arr.push(num_list.slice(i, i + n))
        
        //result.push(num_list.slice(i, i + n))
	}

	let resultLen = Math.ceil(num_list.length / n)

	for (i = 0; i < resultLen; i++) {
    	result.push(arr[i])
	}
	
    return result
    }

정수 배열 num_list와 정수 n이 매개변수로 주어집니다. num_list를 다음 설명과 같이 2차원 배열로 바꿔 return하도록 solution 함수를 완성해주세요.

num_list가 [1, 2, 3, 4, 5, 6, 7, 8] 로 길이가 8이고 n이 2이므로 num_list를 2 * 4 배열로 다음과 같이 변경합니다. 2차원으로 바꿀 때에는 num_list의 원소들을 앞에서부터 n개씩 나눠 2차원 배열로 변경합니다.

 

num_list를 n개씩 잘라서 push해주면 되지 않을까? 생각은 맞았다 하지만 문제가 좀 있다 다른 사람들의 코드를 보니까 내 가 작성한 코드는 작동엔 문제가 없지만 군더더기가 많아 길다는 것이다 그래서 다시 생각하니 주석으로 처리했다면 변수 arr을 만들 필요도 밑에 코드들도 필요가 없었다

 

그리고 추가로 알게 된 것은 splice(), slice()의 차이를 다시 생각나게 해주는 것과 splice()의 활용 부분이었다 원본 배열에 영향을 주냐 안주냐 하는 두 메서드의 차이는 배웠지만 잊어버리고 있었다

splice()의 활용은 단순히 배열을 바꿔치기 해주는 메서드로만 생각했었는데 다른 변수에 대입하면 제거할 부분을 그 변수에 할당할 수 있었다 

 

 정리 

  • splice(), slice()는 원본 배열에 영향을 주냐 안주냐가 가장 큰 차이점이다
  • splice()는 단순히 바꿔치기용이 아니라 그 바꿀 부분을 다른 변수에 할당할 수 있다 이렇게하면 원본 배열도 바뀌기 때문에 배열이 쪼개진다

 

 

 

 

'오늘 뭐했냐 > 기억하면 좋을 문제들' 카테고리의 다른 글

배열의 앞 뒤 추가 제거  (0) 2023.06.14
정해진 수의 반복  (0) 2023.06.14
BigInt() 혹은 Math.round() 숫자 값이 클 때  (0) 2023.06.14
객체 활용  (0) 2023.06.13
모스 부호  (0) 2023.06.13