객체의 두 배열을 병합하고 배열 이름을 속성으로 추가

두 개의 객체 배열을 병합하고 동시에 해당 이름을 객체에 속성으로 추가하려고합니다.

const firstGroup = [
    {
        firstname: 'Nick',
        id: 1
    },
    {
        firstname: 'Joe',
        id: 2
    },
]

const secondGroup = [
    {
        firstname: 'Tom',
        id: 1
    },
]

원하는 출력 :

allGroups = [
    {
        groupname: 'firstGroup',
        firstname: 'Nick',
        id: 1
    },
    {
        groupname: 'firstGroup',
        firstname: 'Joe',
        id: 2
    },
    {
        groupname: 'secondGroup',
        firstname: 'Tom',
        id: 1
    }
]

내가 시도한 것은 다음과 같습니다.

Object
    .entries({ firstGroup, secondGroup })
    .reduce((acc, [name, [firstname, id]]) => ([{
        ...acc,
        groupname: name,
        firstname,
        id
    }]), [])

그러나 그것은 작동하지 않고 어떻게 할 수 있는지 알 수 없습니다.

당신의 도움을 주셔서 감사합니다 !

TJ 크라우 더

코드는 비슷했지만 "누산기"배열을 수정하는 대신 각 반복마다 새 배열을 만들고 reduce모든 배열이 아닌 소스 배열의 첫 번째 항목에서만 속성을 가져옵니다.

reduce여기에 복잡성을 추가합니다. IMHO, for-of생성 한 개체의 항목에 대해 루프를 사용합니다 . 루프 본문 내에서 항목을 그룹 이름이있는 새 항목에 매핑 한 다음 모두 allGroups. 이렇게 :

const allGroups = [];
for (const [groupname, entries] of Object.entries({firstGroup, secondGroup})) {
    allGroups.push(...entries.map(entry => ({groupname, ...entry})));
}

라이브 예 :

const firstGroup = [
    {
        firstname: 'Nick',
        id: 1
    },
    {
        firstname: 'Joe',
        id: 2
    },
];

const secondGroup = [
    {
        firstname: 'Tom',
        id: 1
    },
];

const allGroups = [];
for (const [groupname, entries] of Object.entries({firstGroup, secondGroup})) {
    allGroups.push(...entries.map(entry => ({groupname, ...entry})));
}
console.log(allGroups);

그러나 여기에 귀하의 reduce접근 방식 의 작동 버전이 있습니다 .

const firstGroup = [
    {
        firstname: 'Nick',
        id: 1
    },
    {
        firstname: 'Joe',
        id: 2
    },
];

const secondGroup = [
    {
        firstname: 'Tom',
        id: 1
    },
];

const allGroups = Object.entries({ firstGroup, secondGroup })
    .reduce((acc, [groupname, entries]) => {
        acc.push(...entries.map(entry => ({groupname, ...entry})));
        return acc;
    }, []);
console.log(allGroups);


댓글에서 다음과 같이 질문했습니다.

... 최종 객체에서 초기 속성을 선택하면 어떻게 될까요? groupname, firstname하지만 id?

당신은 내가 가지고있는 경우 위의 장소 변경 줄 entry =>({firstname}) =>내가 가지고있는 곳 나열된 개체에서 특성 (들), 그리고 변화를 destructure하기를 ...entry위해 firstname그냥 채우기 위해 그 / 새 개체에 이러한 속성. 예를 들어 :

allGroups.push(...entries.map(({firstname}) => ({groupname, firstname})));

라이브 예- for-of:

const firstGroup = [
    {
        firstname: 'Nick',
        id: 1
    },
    {
        firstname: 'Joe',
        id: 2
    },
];

const secondGroup = [
    {
        firstname: 'Tom',
        id: 1
    },
];

const allGroups = [];
for (const [groupname, entries] of Object.entries({firstGroup, secondGroup})) {
    allGroups.push(...entries.map(({firstname}) => ({groupname, firstname})));
}
console.log(allGroups);

라이브 예- reduce:

const firstGroup = [
    {
        firstname: 'Nick',
        id: 1
    },
    {
        firstname: 'Joe',
        id: 2
    },
];

const secondGroup = [
    {
        firstname: 'Tom',
        id: 1
    },
];

const allGroups = Object.entries({ firstGroup, secondGroup })
    .reduce((acc, [groupname, entries]) => {
        acc.push(...entries.map(({firstname}) => ({groupname, firstname})));
        return acc;
    }, []);
console.log(allGroups);

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

객체의 두 배열을 병합하고 배열 이름을 속성으로 추가

분류에서Dev

객체의 두 배열을 조작하여 새 배열을 만들고 object1의 속성을 업데이트하고 새 배열을 추가합니다.

분류에서Dev

개별 객체 내에있는 두 개의 배열을 속성으로 병합하는 방법

분류에서Dev

배열의 순차 값으로 속성을 추가하여 배열 객체 수정

분류에서Dev

두 객체 배열을 비교하고 배열의 다른 속성 만 가져옵니다.

분류에서Dev

객체의 두 배열을 비교하고 동일한 속성 값을 가진 두 번째 배열의 항목을 제거합니다.

분류에서Dev

키로 두 개의 객체 배열을 병합하고 단일 객체 배열에 고유 키를 유지하는 방법은 무엇입니까?

분류에서Dev

다른 객체 배열 내부에있는 객체 배열 내부의 속성을 추출하고 결과를 문자열 배열로 가져옵니다.

분류에서Dev

두 배열을 하나의 결과 배열로 병합

분류에서Dev

두 개의 객체 배열을 하나의 큰 배열로 병합하는 방법

분류에서Dev

두 배열을 비교하고 다른 배열에 객체 추가

분류에서Dev

객체 배열을 두 배열의 객체로 변환-tyepscript

분류에서Dev

개수를 기준으로 색인을 추가하여 두 개의 자바 스크립트 배열 객체를 병합합니다.

분류에서Dev

배열의 png 이름을 사용하여 두 가지 방법으로 배열을 정렬하는 방법

분류에서Dev

자바 스크립트의 두 속성을 기반으로 배열의 중복 객체 목록 가져 오기

분류에서Dev

동일한 속성을 가진 두 개체의 메서드를 각 속성에 대한 배열로 병합

분류에서Dev

두 개의 객체 배열을 단일 배열로 병합하는 가장 좋은 방법과 효율적인 방법

분류에서Dev

동일한 객체 속성 이름을 병합하고 하나의 배열 객체에서 다른 속성을 결합합니다.

분류에서Dev

객체의 배열을 다른 객체 속성으로 변경하는 가장 좋은 방법

분류에서Dev

JavaScript :이 두 가지 불완전한 객체 배열을 병합하고 완전한 객체 배열을 만드는 방법

분류에서Dev

이 객체 배열을 두 속성을 기준으로 내림차순으로 정렬하는 방법

분류에서Dev

하나의 객체 배열을 두 번째 배열과 비교 키로 비교

분류에서Dev

공통 속성을 기반으로 2 개의 json 배열 객체 병합

분류에서Dev

밑줄을 사용하여 객체 속성을 하나의 배열로 병합

분류에서Dev

값을 기준으로 두 배열을 병합하고 키를 기준으로 두 번째 배열 병합-PHP

분류에서Dev

JavaScript에서 길이가 다른 두 객체 배열의 속성을 매핑하는 방법

분류에서Dev

JSX는 다른 객체의 배열에 속성을 추가합니다.

분류에서Dev

Swift Combine-N 개 객체 배열 내부의 객체 속성을 관찰하고 다른 속성과 병합

분류에서Dev

AngularJS-배열의 각 객체에 새 속성을 추가하는 방법

Related 관련 기사

  1. 1

    객체의 두 배열을 병합하고 배열 이름을 속성으로 추가

  2. 2

    객체의 두 배열을 조작하여 새 배열을 만들고 object1의 속성을 업데이트하고 새 배열을 추가합니다.

  3. 3

    개별 객체 내에있는 두 개의 배열을 속성으로 병합하는 방법

  4. 4

    배열의 순차 값으로 속성을 추가하여 배열 객체 수정

  5. 5

    두 객체 배열을 비교하고 배열의 다른 속성 만 가져옵니다.

  6. 6

    객체의 두 배열을 비교하고 동일한 속성 값을 가진 두 번째 배열의 항목을 제거합니다.

  7. 7

    키로 두 개의 객체 배열을 병합하고 단일 객체 배열에 고유 키를 유지하는 방법은 무엇입니까?

  8. 8

    다른 객체 배열 내부에있는 객체 배열 내부의 속성을 추출하고 결과를 문자열 배열로 가져옵니다.

  9. 9

    두 배열을 하나의 결과 배열로 병합

  10. 10

    두 개의 객체 배열을 하나의 큰 배열로 병합하는 방법

  11. 11

    두 배열을 비교하고 다른 배열에 객체 추가

  12. 12

    객체 배열을 두 배열의 객체로 변환-tyepscript

  13. 13

    개수를 기준으로 색인을 추가하여 두 개의 자바 스크립트 배열 객체를 병합합니다.

  14. 14

    배열의 png 이름을 사용하여 두 가지 방법으로 배열을 정렬하는 방법

  15. 15

    자바 스크립트의 두 속성을 기반으로 배열의 중복 객체 목록 가져 오기

  16. 16

    동일한 속성을 가진 두 개체의 메서드를 각 속성에 대한 배열로 병합

  17. 17

    두 개의 객체 배열을 단일 배열로 병합하는 가장 좋은 방법과 효율적인 방법

  18. 18

    동일한 객체 속성 이름을 병합하고 하나의 배열 객체에서 다른 속성을 결합합니다.

  19. 19

    객체의 배열을 다른 객체 속성으로 변경하는 가장 좋은 방법

  20. 20

    JavaScript :이 두 가지 불완전한 객체 배열을 병합하고 완전한 객체 배열을 만드는 방법

  21. 21

    이 객체 배열을 두 속성을 기준으로 내림차순으로 정렬하는 방법

  22. 22

    하나의 객체 배열을 두 번째 배열과 비교 키로 비교

  23. 23

    공통 속성을 기반으로 2 개의 json 배열 객체 병합

  24. 24

    밑줄을 사용하여 객체 속성을 하나의 배열로 병합

  25. 25

    값을 기준으로 두 배열을 병합하고 키를 기준으로 두 번째 배열 병합-PHP

  26. 26

    JavaScript에서 길이가 다른 두 객체 배열의 속성을 매핑하는 방법

  27. 27

    JSX는 다른 객체의 배열에 속성을 추가합니다.

  28. 28

    Swift Combine-N 개 객체 배열 내부의 객체 속성을 관찰하고 다른 속성과 병합

  29. 29

    AngularJS-배열의 각 객체에 새 속성을 추가하는 방법

뜨겁다태그

보관