Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript

  1. 자바스크립트 배열에서 중복 항목 제거하는 방법

    숫자나 문자열 리터럴로 구성된 배열 안에 중복된 값이 포함되어 있을 때, 새로운 배열을 만들거나 중복 값을 별도의 공간에 저장하지 않고 원본 배열에서 바로 제거해야 하는 경우가 있습니다.이럴 때 Array.prototype.splice() 메서드를 사용하면 배열 내부에서(in-place) 항목을 직접 제거할 수 있습니다. 여기에 Array.prototype.indexOf()와 Array.prototype.lastIndexOf() 메서드를 함께 활용하면 특정 요소가 중복되었는지 손쉽게 판별할 수 있습니다.동작 원리indexOf()는

  2. JavaScript로 배열에서 양의 정수만 골라 제곱의 합 구하기

    문제 소개 실무에서 다루는 배열에는 양수, 음수, 소수, 정수 등 다양한 숫자가 뒤섞여 있는 경우가 많습니다. 이번 글에서는 이런 배열을 입력받아 양의 정수만 골라 각각 제곱한 뒤, 그 합을 반환하는 함수를 JavaScript로 작성해 보겠습니다. 코드 예제 const arr = [1, -4, 6.1, 0.1, 2.6, 5, -2, 1.9, 6, 8.75, -7, 5]; const squareSum = (arr) => { return arr.reduce((acc, val) => { // 첫 번째 조건

  3. JavaScript에서 배열의 숫자를 0~100 범위로 정규화하는 방법

    문제 소개숫자들을 담고 있는 배열이 있을 때, 배열의 모든 값을 0부터 100 사이의 상대적인 값으로 변환하는 함수를 작성해야 한다고 가정해 보겠습니다. 즉, 가장 큰 숫자는 100으로, 가장 작은 숫자는 0으로 변환되며, 나머지 값들은 비율에 따라 0과 100 사이의 적절한 값으로 매핑됩니다.이러한 정규화(Normalization) 작업은 데이터 시각화, 점수 환산, 차트 스케일 조정 등 다양한 상황에서 유용하게 활용됩니다.구현 코드다음은 이를 구현한 코드입니다 −const numbers = [45.71, 49.53,

  4. JavaScript 배열에서 가장 많이 등장하는 요소의 인덱스 구하기

    문자열 또는 숫자 리터럴로 이루어진 배열을 입력받아, 가장 많이 등장한 요소의 인덱스를 반환하는 함수를 작성해야 한다고 가정해 보겠습니다.이 문제를 해결하는 가장 효율적인 방법은 배열을 한 번 순회하면서 각 요소의 등장 횟수를 기록하는 빈도 맵(frequencyMap)을 만드는 것입니다. 그런 다음 빈도 맵에서 최대 등장 횟수를 가진 값을 찾아, 해당 값이 원본 배열에서 처음 등장하는 위치의 인덱스를 반환하면 됩니다.구현 코드const arr1 = [12, 5, 6, 76, 23, 12, 34, 5, 23, 34, 65, 34, 2

  5. JavaScript에서 래핑(Wrapping)을 활용해 배열을 슬라이스하는 방법

    기본 Array.prototype.slice() 메서드를 직접 덮어쓰는(오버라이딩하는) 커스텀 배열 메서드를 작성해야 한다고 가정해 보겠습니다.일반적으로 Array.prototype.slice() 메서드는 시작 인덱스(start)와 끝 인덱스(end) 두 개의 인수를 받아, 원본 배열에서 start 인덱스부터 end-1 인덱스까지의 하위 배열을 반환합니다.하지만 우리가 원하는 것은 이 slice() 함수가 end-1이 아닌 end 인덱스까지 포함한 하위 배열을 반환하도록 동작을 변경하는 것입니다. 이를 구현한 코드는 아래와 같습니다

  6. JavaScript에서 재귀를 활용해 부분 합 배열 만들기 – map·reduce와 재귀 함수 두 가지 방법

    다음과 같은 숫자 배열이 있다고 가정해 보겠습니다. const arr = [10, 5, 6, 12, 7, 1]; 배열의 첫 번째 요소부터 시작해 매 단계마다 한 개씩 요소를 줄여가며 남은 요소들을 모두 더하면 아래와 같은 결과가 나옵니다. [10, 5, 6, 12, 7, 1] = 10 + 5 + 6 + 12 + 7 + 1 = 41; [5, 6, 12, 7, 1] = 5 + 6 + 12 + 7 + 1 = 31; [6, 12, 7, 1] = 6 + 12 + 7 + 1 = 26; [12, 7, 1] = 12 + 7 + 1 = 20; [7

  7. 자바스크립트 재귀 함수로 행복한 수(Happy Number) 판별하기

    행복한 수(Happy Number)란?행복한 수는 각 자릿수의 제곱을 더한 값으로 숫자를 반복적으로 교체했을 때, 최종적으로 1에 도달하는 수를 말합니다. 반면 이 과정에서 같은 숫자가 다시 나타나면 무한히 사이클이 돌게 되는데, 이러한 수는 불행한 수(Unhappy Number)라고 부릅니다.예를 들어, 13은 행복한 수입니다.1² + 3² = 101² + 0² = 1각 자릿수의 제곱을 계속 더하다 보면 결국 1에 도달하기 때문입니다. 반면 36은 불행한 수입니다. 36 → 45 → 41 → 17 → 50 → 25 → 29 → 8

  8. JavaScript reduce() 메서드로 공통 필드 기준 배열 병합하는 방법

    문제 상황다음과 같이 여러 개의 객체를 담고 있는 배열이 있다고 가정해 보겠습니다.const arr = [{ id: 121, hobby: cycling }, { id: 125, hobby: jogging }, { id: 129, hobby: reading }, { id: 121, hobby: writing }, { id: 121, hobby: playing football }, { id: 125, hobby: cooking }, { id:

  9. JavaScript 재귀 함수로 10진수를 16진수로 변환하기 — 사용자 지정 매핑 스케일 활용

    일반적으로 10진수를 16진수(밑이 16)로 변환할 때는 0123456789ABCDEF라는 표준 문자 집합을 사용해 각 자릿수를 매핑합니다. 이번에 작성할 함수는 정확히 같은 변환을 수행하되, 사용자가 이 표준 집합 대신 원하는 어떤 문자 집합(스케일)이든 자유롭게 지정할 수 있도록 하는 것이 목표입니다. 예를 들어 다음과 같습니다. 10진수 363의 16진수 표기는 16B입니다. 하지만 사용자가 0123456789ABCDEF 대신 qwertyuiopasdfgh라는 스케일을 사용하기로 하면, 숫자 363은 wus로 표현됩니다. 그

  10. JavaScript로 특정 합계를 만족하는 연속 요소 쌍의 인덱스 찾기

    문제 정의배열과 하나의 숫자를 입력받아, 배열 안에서 인접한 두 요소의 합이 주어진 숫자와 일치하는 첫 번째 쌍을 찾고, 그 쌍 중 첫 번째 요소의 인덱스를 반환하는 함수를 작성해야 합니다.만약 조건을 만족하는 쌍이 배열에 존재하지 않는다면 -1을 반환하도록 구현합니다.여기서 말하는 쌍(pair)은 배열에서 임의로 선택된 두 요소가 아니라, 서로 붙어 있는(연속된) 두 요소를 의미한다는 점에 유의하세요. 즉, arr[i]와 arr[i+1]의 관계만 검사하게 됩니다.구현 코드이 로직은 간단한 반복문으로 해결할 수 있습니다. 배열을 처

  11. JavaScript로 배열의 각 숫자에 대한 팩토리얼(계승)을 계산해 새 배열로 반환하기

    이번 글에서는 숫자로 이루어진 배열을 입력받아, 각 요소에 해당하는 팩토리얼(계승) 값을 담은 새로운 배열을 반환하는 JavaScript 함수를 작성해 보겠습니다.구현 방식은 다음과 같습니다. 먼저 하나의 숫자를 받아 그 팩토리얼을 반환하는 재귀(recursive) 함수를 작성하고, 이후 map() 메서드를 사용해 배열의 각 요소를 순회하면서 팩토리얼을 계산한 뒤, 최종적으로 팩토리얼 값들로 구성된 새로운 배열을 반환합니다.코드 예제 factorial(element)); console.log(factorialArray(arr));

  12. JavaScript 객체에서 값이 가장 큰 항목 n개 추출하기

    축구 선수의 다양한 능력치를 담고 있는 객체가 있다고 가정해 보겠습니다.const qualities = { defence: 82, attack: 92, heading: 91, pace: 96, dribbling: 88, tenacity: 97, vision: 91, passing: 95, shooting: 90 };이번 글에서는 위와 같은 객체와 숫자 n(객체의 키 개수 이하)을 입력받아, 값이 가장 큰 n개의 키-값 쌍으로 구성된 객체를 반환하는 함수를 작성해 보겠습

  13. JavaScript로 배열에서 숫자와 문자열을 분리하고 각각 정렬하는 방법

    숫자 리터럴과 문자열 리터럴이 섞여 있는 배열이 주어졌을 때, 두 데이터 타입을 분리하면서 동시에 각 타입 내부에서도 정렬이 이루어지도록 만들어야 하는 경우가 있습니다.이 문제는 Array.prototype.sort() 메서드에 사용자 정의 비교 함수(comparator)를 전달하는 방식으로 깔끔하게 해결할 수 있습니다. 비교 함수는 아래와 같은 규칙에 따라 동작합니다.두 요소가 모두 숫자인 경우 → a - b를 반환하여 오름차순으로 정렬첫 번째 요소만 숫자인 경우 → -1을 반환하여 숫자를 앞쪽에 배치두 번째 요소만 숫자인 경우

  14. JavaScript로 문자열에서 배열에 포함된 단어 제거하기

    문제 상황하나의 문자열과 문자열 배열이 주어졌을 때, 배열에 포함된 모든 단어를 원본 문자열에서 제거하는 함수를 작성해야 합니다.여기서 제거 대상은 완전한 단어이므로, 단어를 삭제한 후 남는 앞뒤 공백도 함께 정리하여 두 개 이상의 공백이 연속으로 나타나지 않도록 처리해야 합니다.그럼 이 기능을 구현하는 코드를 작성해 보겠습니다.구현 예시 { const regex = new RegExp(` ${val}`, g); return acc.replace(regex, ); }, str); }; consol

  15. 자바스크립트로 연속 요소 그룹화하기: 배열 압축 함수 구현 방법

    대시(-)로 구분된 반복 단어들이 포함된 문자열이 다음과 같이 주어졌다고 가정해 보겠습니다.const str = monday-sunday-tuesday-tuesday-sunday-sunday-monday-mondaymonday;우리의 과제는 각 객체가 value와 count라는 두 개의 속성을 가진 객체 배열을 반환하는 함수를 작성하는 것입니다. 여기서 value는 문자열에 포함된 단어(monday, tuesday, sunday)를 의미하며, count는 해당 단어가 연속으로 나타난 횟수를 나타냅니다.예를 들어 위 문자열의 경우 결

  16. JavaScript에서 'HH:MM:SS' 형식의 시간을 초 단위로 변환하는 방법

    시간을 나타내는 HH:MM:SS 형식의 문자열을 입력받아, 해당 시간을 초 단위 숫자로 변환하여 반환하는 함수를 작성해 보겠습니다.예를 들어 다음과 같이 동작해야 합니다.countSeconds(12:00:00) // 43200 countSeconds(00:30:10) // 1810구현 아이디어변환 로직은 매우 간단합니다. 먼저 문자열을 콜론(:) 기준으로 분리(split)하고, 각 부분을 숫자로 변환한 뒤 다음 공식으로 초를 계산합니다.1시간 = 3600초1분 = 60초즉, (시 × 3600) + (분 × 60) + 초를 계산하면

  17. JavaScript로 배열에서 첫 번째 반복 요소의 인덱스 찾기

    문제 정의문자열이나 숫자 리터럴로 구성된 배열이 주어지며, 이 배열에는 반복되는 값이 있을 수도 있고 없을 수도 있습니다. 우리가 작성해야 할 함수는 배열을 입력받아 첫 번째 반복 요소의 인덱스를 반환하는 것입니다. 만약 배열에 반복되는 요소가 전혀 없다면 -1을 반환해야 합니다.접근 방법이 문제는 해시 기반의 객체(map)를 활용하면 효율적으로 해결할 수 있습니다. 알고리즘의 흐름은 다음과 같습니다.먼저 for 루프를 사용하여 배열을 처음부터 끝까지 순회하면서, 빈 객체(map)를 준비해 각 요소를 키로, 해당 요소의 인덱스를 값

  18. 재귀 함수만으로 JavaScript 배열의 홀수와 짝수를 분류하는 방법

    숫자 배열을 입력받아 odd(홀수)와 even(짝수) 속성을 가진 객체를 반환하는 재귀 함수, 예를 들어 pushRecursively()를 작성해야 합니다. 여기서 odd는 입력 배열에서 추출한 홀수들의 배열, even은 짝수들의 배열입니다. 이 문제는 반드시 재귀(recursion) 방식으로 해결해야 하며, for문이나 forEach 같은 어떤 종류의 반복문도 사용해서는 안 됩니다.코드 예제const arr = [12,4365,76,43,76,98,5,31,4];const pushRecursively = (arr, len = 0,

  19. JavaScript로 배열의 최댓값과 최솟값 사이 숫자들의 합 구하기

    문제 이해하기두 개의 요소를 가진 배열 [a, b]를 입력받아, a와 b 사이에 있는 모든 숫자의 합(a와 b 포함)을 반환하는 함수 sumBetween()을 작성해야 합니다.예를 들면 다음과 같습니다.[4, 7] → 4+5+6+7 = 22[10, 6] → 10+9+8+7+6 = 40해결 접근 방식반복문으로 모든 숫자를 하나씩 더하는 대신, 등차수열의 합 공식을 활용하면 훨씬 효율적으로 문제를 해결할 수 있습니다. 1부터 n까지의 자연수 합은 다음 공식으로 구할 수 있습니다.sum(n) = n × (n + 1) / 2이 공식을 활용

  20. JavaScript에서 무작위 HEX 색상 코드 생성하는 방법

    웹 개발을 하다 보면 배경색이나 테마 색상을 무작위로 지정해야 하는 경우가 종종 있습니다. 이번 글에서는 JavaScript를 사용하여 랜덤한 HEX 색상 코드(예: #C83343)를 생성하는 함수를 만들어 보겠습니다.HEX 색상 코드의 구조HEX 색상 코드는 # 기호 뒤에 6자리 문자가 붙는 형태입니다. 각 자리는 0-9 숫자와 A-F 알파벳으로 구성되며, 총 16가지 문자 조합으로 약 1,677만 가지의 색상을 표현할 수 있습니다.랜덤 색상 생성 함수 구현하기아래 함수는 0부터 F까지의 16개 문자 중 하나를 무작위로 선택하고,

Total 5929 -컴퓨터  FirstPage PreviousPage NextPage LastPage CurrentPage:122/297  20-컴퓨터/Page Goto:1 116 117 118 119 120 121 122 123 124 125 126 127 128