문자열 배열의 요소를 실제 숫자처럼 합산하기다음과 같이 숫자들이 문자열 형태로 담겨 있는 배열이 있다고 가정해 보겠습니다.const arr = [3, 3, 55, 23, 67, 43, 12, 67, 87, 12];JavaScript에서 이런 배열의 요소들을 + 연산자로 단순히 더하면, 각 값이 문자열이기 때문에 덧셈이 아니라 문자열 연결(concatenation)이 일어나게 됩니다. 따라서 우리는 이 배열을 받아 모든 요소를 하나씩 이어 붙이지 않고, 실제 숫자의 합계를 반환하는 함수를 작성해야 합니다.해결 코드 예시배열 메서드인
이번 글에서는 세 개의 인수를 받는 배열 함수 Array.prototype.get()을 직접 작성해 보겠습니다. 첫 번째 인수는 가져올 개수를 뜻하는 숫자 n, 두 번째 인수는 시작 인덱스 m(m ≤ 배열 길이-1), 세 번째 인수는 left 또는 right 두 값 중 하나를 가지는 문자열입니다.이 함수는 원본 배열의 부분 배열을 반환하며, 인덱스 m부터 시작해 지정한 방향(left 또는 right)으로 n개의 요소를 담아야 합니다. 배열의 끝에 도달하면 다시 처음으로 되돌아가는 순환(circular) 방식으로 동작한다는 점이 핵심
다음과 같은 객체 배열이 있다고 가정해 보겠습니다.예시const arr = [ {text:use}, {text: secur}, {text: form}, {text: user}, {text: users}, {text: form}, {text: secur}, {text: sec}, {text: users}, {text: secu}, {text: secur}, {text: for}, {text: form} ]우리가 작성해야 할 함수는 이 배열과
카드 게임에서 여러 플레이어의 점수를 담고 있는 객체 배열이 있다고 가정해 보겠습니다.const scorecard = [{ name: Zahir, score: 23 }, { name: Kabir, score: 13 }, { name: Kunal, score: 29 }, { name: Arnav, score: 42 }, { name: Harman, score: 19 }, { name: Rohi
배열을 다루다 보면 중복된 값이 포함된 배열에서 고유(unique)한 요소가 몇 개인지 세어야 하는 경우가 자주 있습니다. 이번 글에서는 정렬 없이 간단하게 고유 요소의 개수를 구하는 방법을 알아보겠습니다.예를 들어, 다음과 같이 중복 값이 섞여 있는 문자열 배열이 있다고 가정해 봅시다.const arr = [Cat, Dog, Cat, Elephant, Dog, Grapes, Dog, Lion, Grapes, Lion];접근 방식이 배열에는 Cat 2개, Dog 3개, Elephant 1개, Grapes 2개, Lion 2개가 들어
문제 상황 다음과 같은 객체 배열이 있다고 가정해 보겠습니다. const arr = [ {id:0,start:0,duration:117,slide:4,view:0}, {id:0,start:0,duration:12,slide:1,view:0}, {id:0,start:0,duration:41,slide:2,view:0}, {id:0,start:0,duration:29,slide:3,view:0}, {id:0,start:0,duration:123,slide:3,view:0}, {id:0,star
두 개의 배열이 있다고 가정해 보겠습니다. 예를 들어 다음과 같은 두 배열을 생각할 수 있습니다.const array1 = [a,b,c,d,e,f,g,h]; const array2 = [ 1, 0, 0, 1 , 0, 0, 1, 0];두 배열은 항상 길이가 같다고 가정합니다. 우리가 작성해야 할 함수는 두 번째 배열에서 특정 값을 인자로 받으면, 첫 번째 배열 중에서 그 값이 위치한 인덱스와 동일한 인덱스에 있는 모든 요소들을 모아 부분 배열(subarray)로 반환하는 함수입니다.예를 들어 findSubArray(0)을 호출하면 다
JavaScript에서 임의의 깊이까지 중첩된 숫자 배열을 입력받아, 그 안에 있는 가장 큰 수를 반환하는 간단한 함수를 작성해 보겠습니다.문제 정의예를 들어 다음과 같은 입력 배열이 주어졌다고 가정해 봅시다.const arr = [ 34, 65, 67, [ 43, 76, 87, 23, 56, 7, [ 54, 7, 87, 23, 79, 314, 2 ], 54 ], 54, 4, 2 ];이 경우 기대하는 출력 결과는 다음과 같습니다.31
JavaScript에서 배열을 입력받아 모든 중복 값을 제거한 뒤, 제거된 개수만큼 빈 문자열을 배열 끝에 삽입하여 원래 배열의 길이를 그대로 유지하는 함수를 작성해야 하는 경우가 있습니다.예를 들어 중복 값이 4개 발견되면, 해당 값들을 모두 제거한 후 배열 끝에 빈 문자열 4개를 추가해야 합니다.이번 포스팅에서는 reduce와 lastIndexOf 메서드를 활용해 이 문제를 해결하는 방법을 살펴보겠습니다.구현 예제const arr = [1,2,3,1,2,3,2,2,3,4,5,5,12,1,23,4,1]; const deleteAn
숫자로 이루어진 배열과 숫자 n을 인수로 받는 함수를 작성해야 한다고 가정해 보겠습니다. 이때 n은 배열의 어떤 요소보다 크거나 같아야 합니다. 이 함수는 배열에서 연속된 요소들의 합이 n을 초과하는 지점마다 배열을 잘라서 여러 개의 하위 배열(subarray)로 분할해야 합니다. 문제 이해하기 예를 들어 다음과 같습니다. // 원본 배열: const arr = [2, 1, 2, 1, 1, 1, 1, 1]; // 숫자 n이 4일 때 // 기대되는 출력 결과: const output = [ [ 2, 1 ], [ 2, 1, 1 ], [
문자열 배열을 다루다 보면 각 문자열 안에 하나 이상의 숫자가 섞여 있는 경우가 있습니다. 예를 들어 다음과 같은 배열이 있다고 가정해 보겠습니다.const arr = [di5aster, ca1amity, cod3, ho2me3, ca11ing];이때 각 문자열에 포함된 숫자를 추출하여, 그 숫자를 기준으로 배열을 오름차순으로 정렬해야 하는 요구사항이 생길 수 있습니다. 위 배열의 경우 올바른 정렬 결과는 다음과 같습니다.const output = [ ca1amity, cod3, di5aster, ca11ing, ho2me3 ];해
JavaScript로 계층형 데이터를 다룰 때, 각 객체가 자신의 직접 및 간접적인 하위 항목(자식)을 모두 담고 있어야 하는 경우가 자주 있습니다. 이번 글에서는 id와 parent_id로 구성된 배열을 가공하여, 각 객체에 childs 속성을 추가하는 방법을 알아보겠습니다.문제 상황다음과 같이 카테고리 정보를 담은 객체 배열이 있다고 가정해 보겠습니다.const arr = [ { id: 1, parent_id: 0, title: Movies }, { id: 2, parent_id: 0, title: Music },
두 개의 배열에 일부 공통된 값이 포함되어 있을 때, 양쪽 배열에 공통으로 존재하지 않는 요소들만 모아 새로운 배열로 반환하는 함수를 작성하는 것이 목표입니다.예를 들어 다음과 같습니다.// 두 배열이 다음과 같을 때: const first = [cat, dog, mouse]; const second = [zebra, tiger, dog, mouse]; // 기대하는 출력 결과: const output = [cat, zebra, tiger] // 이 세 요소만 양쪽 배열에 공통으로 존재하지 않기 때문입니다.그럼 코드를 작성해 보겠습
배열과 숫자 n을 인수로 받아, 배열에서 모든 n번째 요소를 제자리(in-place)에서 제거하는 함수 removeNth를 작성해야 한다고 가정해 보겠습니다. 이런 작업은 자바스크립트의 Array.prototype.splice() 메서드를 활용하면 간단하게 처리할 수 있습니다. 핵심은 반복문의 시작 인덱스와 증가 폭을 어떻게 설정하느냐에 있습니다. 예제 코드 const arr = [T,h,a,i,s,b, ,i,c,s, ,a,t,h,e,e, ,t,s,o,r,n,g,t, ,t,n,h,a,s,t, ,o,n,e,o,v,e,a,r, ,f,e
JavaScript를 다루다 보면 여러 개의 키-값 쌍을 가진 객체들이 담긴 배열을 하나의 객체로 병합해야 하는 경우가 자주 발생합니다. 예를 들어 다음과 같은 객체 배열이 있다고 가정해 보겠습니다.const arr = [ {name1: firstString}, {name2: secondString}, {name3: thirdString}, {name4: fourthString}, {name5: fifthString}, {name6: sixthString}, ];이때 우리가 만들어야 할 함
배열의 첫 번째 요소에 담긴 문자열이, 두 번째 요소의 문자열에 포함된 모든 글자를 가지고 있는지 판별하여 true 또는 false를 반환하는 함수를 작성해 보겠습니다.문제 이해하기먼저 몇 가지 예시를 통해 동작 방식을 살펴보겠습니다.[hello, Hello]는 true를 반환해야 합니다. 대소문자 구분 없이 두 번째 문자열의 모든 글자가 첫 번째 문자열 안에 존재하기 때문입니다.[hello, hey]는 false를 반환해야 합니다. hello에는 y라는 글자가 없기 때문입니다.[Alien, line]은 true를 반환해야 합니다.
문제 상황JavaScript에서는 한 객체에 담긴 여러 속성 중 필요한 것만 골라내야 하는 경우가 자주 발생합니다. 이번 글에서는 extract()라는 함수를 작성하여, 지정된 속성들을 한 객체에서 다른 객체로 옮기고 동시에 원본 객체에서는 삭제하는 방법을 알아보겠습니다.예를 들어, obj1과 obj2라는 두 객체가 있다고 가정해 보겠습니다.obj1 = {color:red, age:23, name:cindy} obj2 = extract(obj1, [color,name])extract 함수를 실행한 후에는 다음과 같은 결과가 나와야
다음과 같은 숫자 배열이 있다고 가정해 보겠습니다.const arr = [3, 5, 7, 8, 3, 5, 7, 4, 2, 8, 4, 2, 1];여기서 우리는 각 요소와 바로 앞에 있는 요소(선행 요소)의 평균을 담은 새로운 배열을 반환하는 함수를 작성해야 합니다. 단, 첫 번째 요소는 앞에 다른 요소가 존재하지 않기 때문에 해당 요소 자체를 그대로 반환하면 됩니다.이 문제는 Array.prototype.map() 메서드를 활용하면 간결하게 해결할 수 있습니다. 코드를 작성해 보겠습니다.예제const consecutiveAverage
문제 상황다음과 같이 숫자로 이루어진 배열 안에 또 다른 배열들이 들어 있는 구조(2차원 배열)가 있다고 가정해 봅시다.const arr = [ [12, 56, 34, 88], [65, 66, 32, 98], [43, 87, 65, 43], [32, 98, 76, 83], [65, 89, 32, 54], ];여기서 우리가 작성해야 할 함수는 이 중첩 배열을 순회하면서 각 하위 배열에서 가장 큰 값(최댓값)만 모아 새로운 배열로 반환하는 것입니다.즉, 결과적으로 원본 배열과 길이가 같으면서, 각 요
0과 1로만 이루어진 숫자 배열이 있다고 가정해 보겠습니다.const arr = [0, 1, 0, 1];우리는 이 배열에 사용될 toBinary()라는 배열 함수를 작성해야 합니다. 이 함수는 배열에 담긴 이진수 값에 대응하는 십진수 정수를 반환해야 합니다.예를 들어, 배열이 다음과 같다면 −const arr = [1, 0, 1, 1];출력 결과는 11이 되어야 합니다. 이는 이진수 1011의 십진수 표현이 11이기 때문입니다.그럼 이 기능을 구현하는 코드를 살펴보겠습니다. 크게 두 가지 방법이 있습니다.방법 1: par