본문 바로가기
반응형

개발/JavaScript32

자바스크립트 - 전치 행렬 구하기 (Transpose 2D Array) 자바스크립트 전체 링크 다음과 같은 원본 배열이 있다고 가정하자. const originalArray = [ [1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18], ]; 이 배열을 전치(transpose)해서 아래의 배열을 얻어보자. [ [ 1, 7, 13 ], [ 2, 8, 14 ], [ 3, 9, 15 ], [ 4, 10, 16 ], [ 5, 11, 17 ], [ 6, 12, 18 ] ] 코드는 다음과 같다. const transpose = (array) => { const rows = array.length; const cols = array[0].length; const transposedArray = []; for (let j .. 2024. 4. 10.
자바스크립트 - 2차원 배열 빈 행 / 열 추가, 삭제하기 자바스크립트 전체 링크 다음과 같은 배열에 빈 행/열을 추가하거나 삭제해보자. 주어지는 배열의 모든 행의 길이는 같다고 가정한다. const myArray = [ [1, 2, 3, 4, 5, 6, 7], [8, 9, 10, 11, 12, 13, 14], [15, 16, 17, 18, 19, 20, 21], [22, 23, 24, 25, 26, 27, 28], [29, 30, 31, 32, 33, 34, 35], ]; 행 추가 table의 rowIndex 부터 amount 만큼 행을 추가하는 메서드는 다음과 같다. emptyArray로 table row의 length만큼 빈 문자열로 이루어진 배열을 만들어서 추가하였다. const insertRows = (table, rowIndex, amount) => .. 2024. 4. 10.
자바스크립트 - 길이가 같은 두 배열을 합치기 (Zip Array using Currying) 자바스크립트 전체 링크 길이가 같은 배열을 쌍으로 만들고 싶은 경우, 커링을 이용해서 배열을 합쳐보자. const zip = (...left) => (...right) => { return left.map((item, i) => [item, right[i]]); }; let arr1 = [1, 2, 3]; let arr2 = ["A", "B", "C"]; let result = zip(...arr1)(...arr2); console.log(result); // [ [ 1, 'A' ], [ 2, 'B' ], [ 3, 'C' ] ] 2024. 3. 15.
자바스크립트 - 2차원 배열에서 중복된 행 제거하기 자바스크립트 전체 링크 중복된 행을 체크해서 제거한다. const removeDuplicateRows = (array) => { // 중복 체크 let uniqueRows = {}; // 중복되지 않은 행만 포함하는 새로운 배열 let result = array.filter(function (row) { let rowStr = row.join(","); if (!uniqueRows[rowStr]) { uniqueRows[rowStr] = true; return true; } return false; }); return result; }; var array2D = [ [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], [11, 12, 13, 14, 15, 16, 17, 18, 19, 20], [1,.. 2024. 3. 7.
자바스크립트 - HTML 태그를 제거하고 텍스트만 추출하기 (Remove HTML Tags and Extract Text) 자바스크립트 전체 링크 참고 - 네이버 스마트 에디터 - Toast UI로 에디터 만들기 (React Editor with Toast Editor 3.0) 네이버 스마트 에디터의 기능 중 하나인 TEXT 추출 기능을 자바스크립트로 구현해 보자. Toast UI Editor에서는 제공하지 않기 때문에 직접 구현해야 한다. 위의 Editor에서 설정한 HTML 태그는 아래와 같다. 깨가 죽으면? 주근깨토끼가 쓰는 빗은? 래빗세상에서 가장 쉬운 숫자는? 190,000 비가 1시간 동안 내리면? 추적 60분 바늘만 가지고 다니는 사람은? 실 없는 사람콩 한알은 영어로? 원빈햄버거는의 색깔은? 버건디 토끼가 강한 이유는? 깡과 총이 있어서 해당 기능을 구현한 메서드는 다음과 같다. const extractText.. 2024. 1. 26.
자바스크립트 - 객체에 존재하는 속성만 덮어쓰기 자바스크립트 전체 링크 객체 obj1, obj2가 있다. let obj1 = { a: "a1", b: "b1", c: "c1", d: "d1", e: "e1", f: "f1", g: "g1", }; let obj2 = { a: "a2", b: "b2", g: "g2", h: "h2", }; obj2의 값을 obj1으로 복사할 때, obj2의 속성이 obj1에 존재하는 경우만 복사하자. . hasOwnProperty를 이용하면 간단하다. for (let key in obj1) { if (obj2.hasOwnProperty(key)) { obj1[key] = obj2[key]; } } 전체 코드는 다음과 같다. let obj1 = { a: "a1", b: "b1", c: "c1", d: "d1", e: "e.. 2023. 9. 2.
자바스크립트 - 공백 제거하기 (Delete Whitespace) 자바스크립트 전체 링크 참고 - 정규 표현식 테스트 정규 표현식과 replace를 이용하면 양 옆 공백을 제거할 수 있다. let str = " blood straw berry "; console.log("1) |" + str + "|"); console.log("2) |" + str.replace(/(^\s*)/gi,"") + "|"); console.log("3) |" + str.replace(/(\s*$)/gi,"") + "|"); console.log("4) |" + str.replace(/(^\s*)|(\s*$)/gi,"") + "|"); 복잡한 정규 표현식보다는 trim을 이용하는 것이 편하다. let str = " blood straw berry "; console.log("1) |" + s.. 2023. 7. 7.
자바스크립트 - 두 날짜 사이의 시간 차이 구하기 자바스크립트 전체 링크 참고 - 로컬 스토리지 유효기간 설정하기 - dayjs로 날짜, 시간 관리하기 두 날짜 사이의 시간 차이는 다음과 같이 구할 수 있다. let start = new Date("2023-01-01"); let today = new Date(); console.log({ start }); console.log({ today }); let diff = today - start; // today.getTime() - start.getTime() let seconds = Math.floor((diff / 1000) % 60); diff = diff / 1000 let minutes = Math.floor((diff / 60) % 60); diff = diff / 60 let hours = .. 2023. 6. 29.
자바스크립트 - 디폴트 매개변수 (Default Parameters) 자바스크립트 전체 링크 자바스크립트에서도 다른 언어와 마찬가지로 기본값 매개변수를 사용할 수 있다. 아래와 같이 b와 c를 각각 0과 1로 지정하였다. const showDefaultParameters = (a, b = 0, c = 1) => { console.log({a, b, c}); } showDefaultParameters(1, 2, 3); // 1, 2, 3 showDefaultParameters(1, 2); // 1, 2, 1 showDefaultParameters(1, undefined, 2); // 1, 0, 2 showDefaultParameters(1, null); // 1, null, 1 중간에 있는 매개변수를 기본값으로 넘기기 위해 undefined를 이용할 수 있다. 아래의 경우 .. 2023. 6. 27.
반응형