햄볶쟈
446
2020-04-17 09:28:30
4
279

json parsing데이터 저장 방법 질문


안녕하세요 json parsing후 데이터 저장관련 질문입니다.

ajax로 뽑아온 데이터

{group:1, data:{a:1,b:2,c:3,d:4,...z:27}}

{group:2, data:{a:1,b:2,c:3,d:4,...z:27}}

{group:3, data:{a:1,b:2,c:3,d:4,...z:27}}

{group:1, data:{a:1,b:2,c:3,d:4,...z:27}}

{group:3, data:{a:1,b:2,c:3,d:4,...z:27}}

{group:3, data:{a:1,b:2,c:3,d:4,...z:27}}

json데이터가 이런식으로 있을때,

.

.

.

{group:1, data:{a:2,b:4,c:6,d:8,...z:54}}

{group:2, data:{a:1,b:2,c:3,d:4,...z:27}}

{group:3, data:{a:3,b:6,c:9,d:12,...z:81}}

이런식으로 group별로 data안에있는 a,b,c,d...z데이터를 더하고 싶은데 어떤 방식으로 해야 될까요?


$.each(parseJsonData, function(key, value){

  arr[group][key] = value;

});

이런방법을 생각해 봤는데 초기화가 안된 상태에서 값을 넣어버려서 언디파인드 에러가 뜨네요


다른 좋은방법 없을까요?


0
  • 답변 4

  • 관짝
    685
    2020-04-17 10:38:29 작성 2020-04-17 10:39:37 수정됨

    var list = ajax에서받아온데이터;

    for(var i = 0; i < list.length; i++){

          var arr = list[i].data;

          var plus = 0;

          for(var j = 0; j < arr.length; j++){

               plus += arr[j];

          }

    }

  • 햄볶쟈
    446
    2020-04-17 10:47:20
    a~z까지의 합을 더하는게 아니라 그룹별로의 a~z값을 더하고 싶습니다..
  • 관짝
    685
    2020-04-17 11:50:48 작성 2020-04-17 11:55:34 수정됨
    var group1 = []; var group2 = []; var group3 = []; $.each(parseJsonData, function(key, value){ var temp = []; var i = 0; $.each(value.data, function(key2, value2){ if(value.group == 'group1'){ group1[i] == null ? group1[i] = value2 : group1[i] = Number(group1[i]) + Number(value2); }else if(value.group == 'group2'){ group2[i] == null ? group2[i] = value2 : group2[i] = Number(group2[i]) + Number(value2); }else if(value.group == 'group3'){ group3[i] == null ? group3[i] = value2 : group3[i] = Number(group3[i]) + Number(value2); }       i++;
          }) })

    일케하시면되겠네여

  • 관짝
    685
    2020-04-17 12:04:37

    다만 저는 예시만 보여드리려고 그냥 배열로 했는데 아마 직접사용하실때에는 a-z값도 있는 map형식으로 만드셔야겠져

    마지막에 for문 이나 each 한 번 더 돌려서 한꺼번에 map형식으로 바꾸셔도 되구여

    모든 json데이터가 a-z라는 전제하에 만든건데 값이 어떤거는 e가 없을 수 있고 a가 없을 수도 있고 그런담 다시 짜야될 것 같네용

  • 로그인을 하시면 답변을 등록할 수 있습니다.