[LeetCode] 17. Letter Combinations of a Phone Number (javascript)
전화기의 숫자 버튼 2~9에는 영문자가 적혀 있다. 주어진 숫자로 조합 가능한 영문자 배열을 리턴하는 문제이다. 2번 버튼은 abc, 3번 버튼엔 def라고 적혀있다면 ['a', 'b', 'c'] 를 만들고 배열을 반복을 돌면서 각 요소마다 다음 버튼의 문자열을 붙여주는 방식으로 해결했다. [['ad', 'ae', 'af'], 'b', 'c'] [['ad', 'ae', 'af'], ['bd', 'be', 'bf'], 'c'] [['ad', 'ae', 'af'], ['bd', 'be', 'bf'], ['cd', 'ce', 'cf']] 그리고 배열을 평탄화해준다. 또 다음 버튼이 있다면 평탄화된 배열에 대하여 똑같이 반복한다. 구상은 쉽게 했는데, 중간에 전화기 버튼 객체가 오염되는 문제가 있어 시간을 허비..
2021. 5. 31.
[Javascript] 객체 수정시 원본이 변경되는 문제(얕은 복사와 깊은 복사)
자바스크립트의 값의 종류는 원시값과 참조값이 존재한다. Boolean, String, number, null, undefined : 원시값 Object, Array : 참조값 원시값의 경우 새로운 변수에 할당시 값 자체가 할당되고, 참조값은 값의 주소가 할당된다. 그러므로 새로운 변수에 할당 후 수정하면, 객체나 배열의 경우 원본의 값이 변경되어버린다. const obj = {'a': 1, 'b': 2}; const tempObj = obj; tempObj.a = 3; console.log(obj); // {'a': 3, 'b': 2} 문제 문제는, formData의 변경이 필요할때 등 원본을 보존하는 복사가 필요한 경우가 생긴다. 예를 들면, 아래와 같은 form 데이터가 있다. formData = {..
2021. 5. 6.