>웹 프론트엔드 >JS 튜토리얼 >Lodash를 사용하여 객체 배열에서 여러 키를 그룹화하는 방법은 무엇입니까?

Lodash를 사용하여 객체 배열에서 여러 키를 그룹화하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-03 03:53:09980검색

How to Group Multiple Keys in an Array of Objects Using Lodash?

고유한 이름을 가진 개체 배열의 여러 키 그룹화

당면 작업에는 렌더링을 더 쉽게 하기 위해 개체 배열을 수정하는 작업이 포함됩니다. 목표는 원래 배열의 실제 이름에 관계없이 특정 키로 개체를 그룹화하는 것입니다.

다음 입력 배열을 고려하세요.

const items = [
  {
    tab: 'Results',
    section: '2017',
    title: 'Full year Results',
    description: 'Something here',
  },
  {
    tab: 'Results',
    section: '2017',
    title: 'Half year Results',
    description: 'Something here',
  },
  {
    tab: 'Reports',
    section: 'Marketing',
    title: 'First Report',
    description: 'Something here',
  }
];

목표 출력은 새 배열을 갖는 것입니다. 다음 구조를 사용합니다:

const output = [
  {
    tab: 'Results',
    sections: [
      {
        section: '2017',
        items: [ { 'item that belongs here' }, { ... } ],
      },
  },
  {
    tab: 'Reports',
    sections: [
      {
        section: 'Marketing',
        items: [ { ... }, { ... } ],
      },
  },
...
]

이를 달성하기 위해 Lodash의 _.map과 _.groupBy의 조합을 사용할 수 있습니다. 함수:

const groupAndMap = (items, itemKey, childKey, predic) => {
    return _.map(_.groupBy(items, itemKey), (obj, key) => ({
        [itemKey]: key,
        [childKey]: (predic && predic(obj)) || obj
    }));
};

var result = groupAndMap(items, "tab", "sections", 
                arr => groupAndMap(arr, "section", "items"));

이제 결과 변수에는 원하는 그룹화된 객체 배열이 포함됩니다.

console.log(result);

위 내용은 Lodash를 사용하여 객체 배열에서 여러 키를 그룹화하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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