"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > JavaScript - 배열 및 객체 구조 분해 [Live Doc]

JavaScript - 배열 및 객체 구조 분해 [Live Doc]

2024-08-26에 게시됨
검색:310

JavaScript - Destructuring Arrays & Objects [Live Doc]

  • 새로운 주제를 따로 공부하세요. 그렇지 않으면 장기적으로 개념을 완전히 이해할 수 없습니다. 이는 일부 경험적 연구에서도 뒷받침됩니다.
  • 구조 분해: 배열이나 객체의 값을 별도의 변수로 압축 해제하는 방법입니다.
const nums = [8,4,5];
const num1 = nums[0];
const num2 = nums[1];
const num3 = nums[2];
console.log(num1, num2, num3);

is reduced to 

const [x,y,z] = nums;
console.log(x, y, z);

three const variables named x,y,z are created in this step
  • [x,y,z] 배열처럼 보이지만 =의 LHS에 있으면 구조 분해로 간주됩니다.
  • 구조 분해는 불변 작업입니다.
const girl = {
  name: 'Melania',
  friends: ['Alina', 'Alice', 'Ayesha', 'Anamika', 'Anaya'],
  eats: ['Roasted', 'Pizza', 'Burger', 'Rice', 'Manchurian'],
};

const [first, second] = girl.friends;
console.log(first, second);

const [,,,fourth,last] = girl.eats;
console.log(fourth, last);

변수 교환 [돌연변이]

let array = [5,6];
let [a,b] = array;
console.log(`a: ${a}, b:${b}`);
[b,a] = [a,b];
console.log(`a: ${a}, b:${b}`);

함수는 배열을 반환하고 결과를 즉시 파괴하여 함수에서 여러 값을 반환할 수 있습니다.

const girl = {
  name: 'Melania',
  friends: ['Alina', 'Alice', 'Ayesha', 'Anamika', 'Anaya'],
  eats: ['Roasted', 'Pizza', 'Burger', 'Rice', 'Manchurian'],
  drinks: ['Juice','Coffee','Coke'],
  order: function(eat,drink){
    return [this.eats[eat],this.drinks[drink]];
  }
};

const [mainCourse, drinks] = girl.order(2, 2);

console.log(`mainCOurse: ${mainCourse}`);
console.log(`drinks: ${drinks}`);

중첩 배열 구조 분해

let nums = [5,3,[8,7,9,3]];
let [x,y,z] = nums;
console.log(`x: ${x}`); // 5
console.log(`y: ${y}`); // 3
console.log(`z: ${z}`); // 8,7,9,3

let nums2 = [5,3,[8,7]];
let [x,,[y,z]] = nums2;
console.log(`x: ${x}`, `y: ${y}`, `z: ${z}`); // 5 8 7 

알 수 없는 크기의 배열에서 구조 분해:

const names = ['Michael','Charlie','Peter'];
let [w='XXX',x='XXX',y='XXX',z='XXX'] = names;
console.log(w,x,y,z); // 'Michael' 'Charlie' 'Peter' 'XXX'

객체 파괴:

  • 객체 구조 분해에는 {}를 사용하고 배열 분해에는 []를 사용합니다.
  • 추출할 객체의 속성 이름에 언급된 정확한 변수 이름을 제공하십시오. 이러한 변수 이름의 순서는 중요하지 않습니다.
const girl = {
  name: 'Melania',
  friends: ['Alina', 'Alice', 'Ayesha', 'Anamika', 'Anaya'],
  eats: ['Roasted', 'Pizza', 'Burger', 'Rice', 'Manchurian'],
  drinks: ['Juice','Coffee','Coke'],
  works: {
        mtwt: {
          start: 9,
          end: 5
        },
        fri: {
          start:9,
          end: 3
        }
  }
};

const {name, works, drinks} = girl;
console.log(name);
console.log(works);
console.log(drinks);


// Replace long property names with custom names:
const {name:user, works:timings, drinks:enjoys} = girl;
console.log(user);
console.log(timings);
console.log(enjoys);


//Destructuring data from API calls returned in the form of objects i.e Attaching a default value to a property that does not exist on object received from an API call

// details does not exist, so default value is assigned
const { details = [], eats: loves = [] } = girl;
console.log(details);
// eats exist but is renamed as loves, hence default value won't apply
console.log(loves);
## Mutating Variables using object destructuring
let x = 10;
let y = 20;
let obj = {x:1, y:2, z:3};

{x,y} = obj; // Error
When we start a line with a '{', then JS expects a code-block. And we cannot assign anything to a code-block on LHS using = operator. Hence, an Error is thrown. The error is resolved by wrapping into () as shown below
({x,y} = obj); //{ x: 1, y: 2, z: 3 }

중첩된 객체 구조 분해

const girl = {
  name: 'Melania',
  friends: ['Alina', 'Alice', 'Ayesha', 'Anamika', 'Anaya'],
  eats: ['Roasted', 'Pizza', 'Burger', 'Rice', 'Manchurian'],
  drinks: ['Juice','Coffee','Coke'],
  works: {
        mtwt: {
          start: 9,
          end: 5
        },
        fri: {
          start:10,
          end: 2
        }
  }
};

let { fri } = works;
console.log(fri);

// Destructuring the fri object using the same property names start, end
let {fri: {start, end}} = works;
console.log(start, end);

// Further renaming for shortening start as 'b' and end as 'e'
let {fri: {start: b, end: e}} = works;
console.log(b, e);





const girl = {
  name: 'Melania',
  friends: ['Alina', 'Alice', 'Ayesha', 'Anamika', 'Anaya'],
  eats: ['Roasted', 'Pizza', 'Burger', 'Rice', 'Manchurian'],
  drinks: ['Juice','Coffee','Coke'],
  works: {
        mtwt: {
          start: 9,
          end: 5
        },
        fri: {
          start:10,
          end: 2
        }
  },
  // these destructured property-names have to be same as they are passed inside the girl.sleep(). Order need not be same.
  sleep: function ({time='NA', address='NA', color = 'NA', duration='NA'}){
    console.log(`${this.name} sleeps at ${address} for ${duration} in ${color}light for ${duration}. She loves to eat ${this.eats[0]}`);
  }
};

// A single object is passed, which will be destructured by the method inside the object extracting all values via destructuring
girl.sleep({time: '10pm', address:'home', color: 'blue', duration: '7hrs'});

girl.sleep({time: '9pm', duration: '7hrs'});
릴리스 선언문 이 기사는 https://dev.to/mahf001/javascript-destructuring-arrays-objects-1agk?1에서 복제됩니다.1 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제하시기 바랍니다.
최신 튜토리얼 더>
  • 깔끔하고 유지 관리 가능한 코드를 위한 JavaScript의 변수 명명 모범 사례
    깔끔하고 유지 관리 가능한 코드를 위한 JavaScript의 변수 명명 모범 사례
    소개: 코드 명확성 및 유지 관리 강화 깨끗하고 이해하기 쉽고 유지 관리가 가능한 코드를 작성하는 것은 모든 JavaScript 개발자에게 중요합니다. 이를 달성하는 주요 측면은 효과적인 변수 이름 지정을 통해서입니다. 이름이 잘 지정된 변수를 사용하면 코드를 더 쉽게...
    프로그램 작성 2024-11-06에 게시됨
  • Spring AOP의 내부 작동 방식 공개
    Spring AOP의 내부 작동 방식 공개
    이 포스트에서는 Spring의 AOP(Aspect-Oriented 프로그래밍)의 내부 메커니즘을 쉽게 설명할 것입니다. AOP가 종종 "마법"의 형태로 간주되는 로깅과 같은 기능을 달성하는 방법을 이해하는 데 중점을 둘 것입니다. 핵심 Java 구현을...
    프로그램 작성 2024-11-06에 게시됨
  • JavaScript E 릴리스 노트: 최신 JavaScript의 성능 활용
    JavaScript E 릴리스 노트: 최신 JavaScript의 성능 활용
    공식적으로 ECMAScript 2015로 알려진 JavaScript ES6에는 개발자가 JavaScript를 작성하는 방식을 변화시키는 중요한 개선 사항과 새로운 기능이 도입되었습니다. ES6를 정의하고 JavaScript 프로그래밍을 더욱 효율적이고 즐겁게 만들어주는...
    프로그램 작성 2024-11-06에 게시됨
  • Javascript의 POST 요청 이해
    Javascript의 POST 요청 이해
    function newPlayer(newForm) { fetch("http://localhost:3000/Players", { method: "POST", headers: { 'Content-Type': 'application...
    프로그램 작성 2024-11-06에 게시됨
  • Savitzky-Golay 필터링을 사용하여 잡음이 있는 곡선을 완화하는 방법은 무엇입니까?
    Savitzky-Golay 필터링을 사용하여 잡음이 있는 곡선을 완화하는 방법은 무엇입니까?
    잡음이 있는 데이터에 대한 곡선 평활화: Savitzky-Golay 필터링 탐색데이터세트를 분석할 때 잡음이 있는 곡선을 평활화하는 문제는 다음과 같습니다. 명확성을 높이고 기본 패턴을 찾아냅니다. 이 작업에 특히 효과적인 방법 중 하나는 Savitzky-Golay 필...
    프로그램 작성 2024-11-06에 게시됨
  • varargs 메서드 오버로드
    varargs 메서드 오버로드
    varargs 메서드 오버로드 가변 길이 인수를 취하는 메서드를 오버로드할 수 있습니다. 이 프로그램은 varargs 메서드를 오버로드하는 두 가지 방법을 보여줍니다. 1 다양한 varargs 매개변수 유형: vaTest(int...) 및 vaTest(boolean.....
    프로그램 작성 2024-11-06에 게시됨
  • 클래식 클래스 구성 요소 내에서 React Hooks를 활용하는 방법은 무엇입니까?
    클래식 클래스 구성 요소 내에서 React Hooks를 활용하는 방법은 무엇입니까?
    React Hooks를 클래식 클래스 구성요소와 통합React 후크는 클래스 기반 구성요소 설계에 대한 대안을 제공하지만 기존 클래스에 통합하여 점진적으로 채택하는 것도 가능합니다. 구성 요소. 이는 고차 컴포넌트(HOC)를 사용하여 달성할 수 있습니다.다음 클래스 컴...
    프로그램 작성 2024-11-06에 게시됨
  • Vite 및 React를 사용하여 더 빠른 단일 페이지 애플리케이션(SPA)을 구축하는 방법
    Vite 및 React를 사용하여 더 빠른 단일 페이지 애플리케이션(SPA)을 구축하는 방법
    현대 웹 개발 세계에서 SPA(단일 페이지 응용 프로그램)는 동적이고 빠르게 로드되는 웹 사이트를 만드는 데 널리 사용됩니다. 사용자 인터페이스 구축을 위해 가장 널리 사용되는 JavaScript 라이브러리 중 하나인 React를 사용하면 SPA 개발이 간단해집니다. ...
    프로그램 작성 2024-11-06에 게시됨
  • JavaScript의 문자열 연결에 대한 단계별 가이드
    JavaScript의 문자열 연결에 대한 단계별 가이드
    JavaScript의 문자열 연결은 두 개 이상의 문자열을 결합하여 단일 문자열을 형성하는 프로세스입니다. 이 가이드에서는 연산자, = 연산자, concat() 메서드 및 템플릿 리터럴 사용을 포함하여 이를 달성하기 위한 다양한 방법을 살펴봅니다. 각 방법은 간단하...
    프로그램 작성 2024-11-06에 게시됨
  • Web UX: 사용자에게 의미 있는 오류 표시
    Web UX: 사용자에게 의미 있는 오류 표시
    사용자 중심적이고 사용자 친화적인 웹사이트를 갖는 것은 때로는 까다로울 수 있습니다. 전체 개발팀이 기능과 핵심 비즈니스에 가치를 더하지 않는 일에 더 많은 시간을 할애하게 되기 때문입니다. 그러나 단기적으로는 사용자에게 도움이 되고 장기적으로는 가치를 더할 수 있습니...
    프로그램 작성 2024-11-06에 게시됨
  • 소규모 클래스 조작자
    소규모 클래스 조작자
    소규모 클래스 매니퓰레이터의 새로운 주요 릴리스 코드가 완전히 리팩터링되었으며 새로운 속성 조작 지원이 코딩되었습니다. 다음은 조작의 예입니다. $classFile = \Small\ClassManipulator\ClassManipulator::fromProjec...
    프로그램 작성 2024-11-06에 게시됨
  • 머신러닝 프로젝트의 효과적인 모델 버전 관리
    머신러닝 프로젝트의 효과적인 모델 버전 관리
    머신러닝(ML) 프로젝트에서 가장 중요한 구성 요소 중 하나는 버전 관리입니다. 기존 소프트웨어 개발과 달리 ML 프로젝트 관리에는 소스 코드뿐만 아니라 시간이 지남에 따라 발전하는 데이터 및 모델도 포함됩니다. 이를 위해서는 실험을 관리하고, 최상의 모델을 선택하고,...
    프로그램 작성 2024-11-06에 게시됨
  • PHP에서 키를 유지하면서 연관 배열을 열 값으로 그룹화하는 방법은 무엇입니까?
    PHP에서 키를 유지하면서 연관 배열을 열 값으로 그룹화하는 방법은 무엇입니까?
    키를 유지하면서 열 값별로 연관 배열 그룹화'id'와 같은 속성을 가진 엔터티를 각각 나타내는 연관 배열의 배열을 고려하세요. 그리고 '이름'. 문제는 원래 키를 유지하면서 특정 열 'id'를 기준으로 이러한 배열을 그룹화하는...
    프로그램 작성 2024-11-06에 게시됨
  • Gradle에서 특정 전이적 종속성을 제외하는 방법은 무엇입니까?
    Gradle에서 특정 전이적 종속성을 제외하는 방법은 무엇입니까?
    Gradle에서 전이적 종속성 제외Gradle에서 애플리케이션 플러그인을 사용하여 jar 파일을 생성할 때 다음과 같은 전이적 종속성이 발생할 수 있습니다. 제외하고 싶을 수도 있습니다. 이를 달성하기 위해 제외 방법을 사용할 수 있습니다.제외의 기본 동작처음에는 or...
    프로그램 작성 2024-11-06에 게시됨
  • 미니멀리스트 생활의 예술
    미니멀리스트 생활의 예술
    미니멀라이프란 무엇인가? 미니멀리스트 생활은 의도적으로 소유한 소유물의 수와 삶의 잡동사니를 줄이는 라이프스타일입니다. 이는 공간을 깔끔하게 정리하는 것뿐만 아니라 삶을 단순화하고, 정말로 중요한 것에 집중하고, 방해 요소를 줄이는 것이기도 합니다. ...
    프로그램 작성 2024-11-06에 게시됨

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3