>  기사  >  웹 프론트엔드  >  JavaScript에서 중첩된 객체를 간결하게 평면화하는 방법은 무엇입니까?

JavaScript에서 중첩된 객체를 간결하게 평면화하는 방법은 무엇입니까?

DDD
DDD원래의
2024-10-22 13:36:02731검색

How to Flatten Nested Objects Concisely in JavaScript?

중첩 객체를 간결하게 평면화

중첩 객체를 평면 구조로 변환하는 작업은 다양한 프로그래밍 시나리오에서 필요한 경우가 많습니다. 빠르고 효율적인 솔루션을 위해 간결한 단일 라이너를 활용할 수 있습니다.

제공된 중첩 개체를 평면화하려면:

{
  a:2,
  b: {
    c:3
  }
}

원하는 출력으로:

{
  a:2,
  c:3
}

다음 JavaScript 표현식을 사용하세요.

Object.assign({}, ...function _flatten(o) { return [].concat(...Object.keys(o).map(k => typeof o[k] === 'object' ? _flatten(o[k]) : ({[k]: o[k]})))}(yourObject))

이 접근 방식의 핵심 개념은 단일 속성 개체의 배열을 재귀적으로 생성하는 것입니다. Object.keys(o) 메소드는 입력 객체 o의 모든 키를 검색합니다. 그런 다음 각 키 k에 대해 개체 유형이 확인됩니다. typeof o[k] === 'object'인 경우 _Flatten 함수가 중첩된 객체에 재귀적으로 적용됩니다. 그렇지 않으면 키 k와 값 o[k]를 사용하여 단일 속성 개체를 구성합니다.

[].concat(... 구문은 이러한 모든 단일 속성 개체를 단일 배열로 결합합니다. 마지막으로, Object.sign({}, ...)은 이러한 배열을 원하는 평면화된 출력으로 병합합니다.

가독성을 위해 코드 형식을 다음과 같이 다시 지정할 수 있습니다.

Object.assign(
  {},
  ...function _flatten(o) {
    return [].concat(...Object.keys(o)
      .map(k =>
        typeof o[k] === 'object' ?
          _flatten(o[k]) :
          ({[k]: o[k]})
      )
    );
  }(yourObject)
)

이것은- liner는 중첩된 개체를 효과적으로 평면화하여 데이터 변환 요구 사항에 맞는 간결하고 효율적인 솔루션을 제공합니다.

위 내용은 JavaScript에서 중첩된 객체를 간결하게 평면화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.