한 형식의 JSON 배열 데이터를 다른 형식으로 변환 하시겠습니까?

Upender Reddy

저는 소프트웨어 필드를 처음 사용합니다. 나는 같은 객체의 json 배열을 가지고 있습니다.

var treeObj = [
      {
        "name": "sriram",
        "refernce_id": "SAN001",
        "sponer_id": "SAN000"
      },
      {
        "name": "neeraja",
        "refernce_id": "SAN002",
        "sponer_id": "SAN001"
      },
      {
        "name": "upender",
        "refernce_id": "SAN003",
        "sponer_id": "SAN001"
      },
      {
        "name": "manoj",
        "refernce_id": "SAN004",
        "sponer_id": "SAN002"
      },
      {
        "name": "shirisha",
        "refernce_id": "SAN005",
        "sponer_id": "SAN002"
      },
      {
        "name": "ragu",
        "refernce_id": "SAN006",
        "sponer_id": "SAN003"
      },
      {
        "name": "santhu",
        "refernce_id": "SAN007",
        "sponer_id": "SAN003"
      }
    ];

여기서는 위의 객체를 함수에 전달합니다. 그 함수에서 나는 모든 객체에서 참조 ID를 sponer_id와 비교해야하고 그들이 같으면 아래와 같이 자식 객체로 호출하는 Array로 푸시해야하며 다시 참조 ID가 자식 배열에서 확인해야합니다 in이 다시 존재하는 경우 위 객체의 sponer_id에 존재합니다. reference_id를 포함하는 객체에 자식 배열로 푸시해야합니다. 최종 배열 객체는 다음과 같습니다.

[
  {
    "name": "sriram",
    "parent": null,
    "children": [
      {
        "name": "neeraja",
        "parent": "sriram",
        "children": [
          {
            "name": "manoj",
            "parent": "neeraja"
          },
          {
            "name": "shirisha",
            "parent": "neeraja"
          }
        ]
      },
      {
        "name": "upender",
        "parent": "sriram",
        "children": [
          {
            "name": "ragu",
            "parent": "neeraja"
          },
          {
            "name": "santhu",
            "parent": "neeraja"
          }
        ]
      }
    ]
  }
]

여기서 treeObj의 sriram의 참조 ID는 neeraja 및 upender 개체에서 sponer ID로 존재합니다. 그래서 니라 자와 범인은 스리 람의 아이가됩니다. neeraja의 reference_id는 treeObj의 manoj 및 shirisha 객체에 sponer_id로 존재합니다. 동시에 자식은 더 많은 자식 개체를 사용할 수 있으며 개체의 형식을 동적으로 지정해야합니다.

내가 쓴 기능은 다음과 같습니다.

var mainArr = [], subArrs = [], subObj={}, subIds = [], find = "SAN001";
    formatData(treeObj);
    function formatData(treeObj){debugger;
        var arr = [];
        for(var x=0; x<= treeObj.length-1; x++){debugger;
            var sampData = treeObj[x];
            if(find == sampData.sponer_id){
                arr.push(sampData.refernce_id);
                subArrs.push(sampData);
            }
        }
        subIds.push(arr);
        console.log(subIds);
        console.log(subArrs);
        formatData(subArrs);
    }

내가 어디로 잘못되었는지 안내 해주세요. 미리 감사드립니다.

필립
//1. find all items the have no parent and push them on a stack like so:

let stack = treeObj.reduce((list, item) => {
  if (<ids match>) list.push(item);
  return item;
}, []),

let result = [].concat(stack);

//2. while loop the stack:

while (stack.length > 0) {
  let item = stack.shift();

  item.children = treeObj.reduce((list, child) => {
    if (<ids match>) {
      list.push(child);
    }
    return list;
  }, []).map(child => {
      child.parent = item;
      stack.unshift(item);
      return child;
  });
}

return result;

최신 정보

그래서»좋은 오래된 JS«와 몇 가지 개선 사항 :

var stack = treeObj.filter(function (item) { 
  return item.<parent_id> === item.<child_id> });

var result = [].concat(stack);

while (stack.length > 0) {
  var item = stack.shift();

  item.children = treeObj.filter(function (child) {
    return item.<id> === child.<parent_id>;
  });

  item.children.forEach(function (child) { stack.unshift(child) });
}

원래:

  1. 루트를 찾아 스택에 저장
  2. while.length > 0

    1. shift() 스택의 첫 번째 항목
    2. 해당 항목의 모든 하위 항목과 unshift스택에서
  3. 끝난

항목에 부모 속성을 추가하거나 불필요한 항목을 제거하는 작업은 루프에서 수행 할 수 있습니다. 재귀를 사용하여 모든 작업을 수행 할 수도 있지만 한 번은 그런 작업을 수행하여»너무 많은 재귀 오류«를 겪었으므로 반복적 인 접근 방식을 선호합니다. 그리고, 대신 물론 .reduce, .filter그리고 .forEach, 당신은 정기적으로 루프를 사용할 수 있지만, 나는 기능적인 스타일을 선호한다. 대체로, 어떻게 하든지간에 그렇게 어렵지 않습니다. 시작하는 요소를 찾은 다음 모든 자녀와 함께 반복합니다. while루프를 사용하면 모든 자식이 발견되거나 해당 요소가 루트 인 전체 하위 트리를 찾습니다 .

행운을 빕니다!

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

이미지를 한 형식에서 다른 형식으로 대량 변환 하시겠습니까?

분류에서Dev

이미지를 한 형식에서 다른 형식으로 대량 변환 하시겠습니까?

분류에서Dev

효율적인 방법으로 NET Core에서 한 데이터 유형의 배열을 다른 배열로 변환 하시겠습니까?

분류에서Dev

한 형식의 json을 다른 형식으로 변환하는 방법

분류에서Dev

JSON OBJ를 배열로 변환하려고 할 때 json을 사용하여 테이블 형식으로 데이터를 표시하고 싶습니다.

분류에서Dev

xlsx를 JSON 형식으로 변환 하시겠습니까?

분류에서Dev

문자열 날짜를 다른 형식 C #으로 변환 하시겠습니까?

분류에서Dev

날짜를 다른 형식으로 변환 하시겠습니까?

분류에서Dev

배열의 데이터를 json 형식으로 표시

분류에서Dev

JSON 배열을 다른 형식으로 변경하는 방법

분류에서Dev

Python을 사용하여 PDF 데이터를 JSON 형식으로 변환 하시겠습니까?

분류에서Dev

Javascript 배열을 매핑하고 그 안의 객체를 특정 형식으로 변환 하시겠습니까?

분류에서Dev

열 이름을 언급하지 않고 Pandas에서 한 번에 여러 열 데이터 형식 형식을 다른 데이터 형식 형식으로 변환하는 방법은 무엇입니까?

분류에서Dev

PHP를 사용하여 배열을 안드로이드에 적합한 JSON 형식으로 변환

분류에서Dev

Json 날짜를 PHP 날짜 형식으로 변환 하시겠습니까?

분류에서Dev

다른 형식으로 배열 변환

분류에서Dev

react axios post는 배열 형식으로 json을 생성합니다. 이것을 "이름": "값"유형 형식으로 변환하는 방법

분류에서Dev

자바 스크립트를 사용하여 json 데이터를 다른 형식으로 변환

분류에서Dev

R의 날짜 형식을 시계열 데이터에 대해 더 관리하기 쉬운 형식으로 변환 하시겠습니까?

분류에서Dev

래스터 형식을 한 형식에서 다른 형식으로 변환

분류에서Dev

문자열 날짜를 DateTime 형식으로 변환 하시겠습니까?

분류에서Dev

데이터베이스에서 데이터를 배열 형식으로 전달한 다음이 배열을 PHP로 표시하고 싶습니다.

분류에서Dev

변수 엑셀 데이터를 동일한 형식의 변형으로 읽습니다.

분류에서Dev

JS는 객체 배열을 JSON GroupBy 형식으로 변환합니다.

분류에서Dev

날짜를 한 형식에서 다른 형식으로 변환하면 예외가 발생합니다.

분류에서Dev

테이블 스토리지의 데이터를 문자열에서 .NET SDK의 다른 형식으로 변환

분류에서Dev

PHP : 배열 형식을 다른 형식으로 변환

분류에서Dev

R 데이터 세트를 긴 형식으로 변환하는 복잡한 버전 (ID 정보가 여러 개의 서로 다른 행에 분산 됨)

분류에서Dev

다차원 배열을 json 형식으로 변환

Related 관련 기사

  1. 1

    이미지를 한 형식에서 다른 형식으로 대량 변환 하시겠습니까?

  2. 2

    이미지를 한 형식에서 다른 형식으로 대량 변환 하시겠습니까?

  3. 3

    효율적인 방법으로 NET Core에서 한 데이터 유형의 배열을 다른 배열로 변환 하시겠습니까?

  4. 4

    한 형식의 json을 다른 형식으로 변환하는 방법

  5. 5

    JSON OBJ를 배열로 변환하려고 할 때 json을 사용하여 테이블 형식으로 데이터를 표시하고 싶습니다.

  6. 6

    xlsx를 JSON 형식으로 변환 하시겠습니까?

  7. 7

    문자열 날짜를 다른 형식 C #으로 변환 하시겠습니까?

  8. 8

    날짜를 다른 형식으로 변환 하시겠습니까?

  9. 9

    배열의 데이터를 json 형식으로 표시

  10. 10

    JSON 배열을 다른 형식으로 변경하는 방법

  11. 11

    Python을 사용하여 PDF 데이터를 JSON 형식으로 변환 하시겠습니까?

  12. 12

    Javascript 배열을 매핑하고 그 안의 객체를 특정 형식으로 변환 하시겠습니까?

  13. 13

    열 이름을 언급하지 않고 Pandas에서 한 번에 여러 열 데이터 형식 형식을 다른 데이터 형식 형식으로 변환하는 방법은 무엇입니까?

  14. 14

    PHP를 사용하여 배열을 안드로이드에 적합한 JSON 형식으로 변환

  15. 15

    Json 날짜를 PHP 날짜 형식으로 변환 하시겠습니까?

  16. 16

    다른 형식으로 배열 변환

  17. 17

    react axios post는 배열 형식으로 json을 생성합니다. 이것을 "이름": "값"유형 형식으로 변환하는 방법

  18. 18

    자바 스크립트를 사용하여 json 데이터를 다른 형식으로 변환

  19. 19

    R의 날짜 형식을 시계열 데이터에 대해 더 관리하기 쉬운 형식으로 변환 하시겠습니까?

  20. 20

    래스터 형식을 한 형식에서 다른 형식으로 변환

  21. 21

    문자열 날짜를 DateTime 형식으로 변환 하시겠습니까?

  22. 22

    데이터베이스에서 데이터를 배열 형식으로 전달한 다음이 배열을 PHP로 표시하고 싶습니다.

  23. 23

    변수 엑셀 데이터를 동일한 형식의 변형으로 읽습니다.

  24. 24

    JS는 객체 배열을 JSON GroupBy 형식으로 변환합니다.

  25. 25

    날짜를 한 형식에서 다른 형식으로 변환하면 예외가 발생합니다.

  26. 26

    테이블 스토리지의 데이터를 문자열에서 .NET SDK의 다른 형식으로 변환

  27. 27

    PHP : 배열 형식을 다른 형식으로 변환

  28. 28

    R 데이터 세트를 긴 형식으로 변환하는 복잡한 버전 (ID 정보가 여러 개의 서로 다른 행에 분산 됨)

  29. 29

    다차원 배열을 json 형식으로 변환

뜨겁다태그

보관