javanava
832
2017-12-18 16:41:57 작성 2017-12-18 16:44:19 수정됨
8
1236

$.each에서 마지막 인덱스의 값을 출력하고 싶습니다


안녕하세요 초보 개발자 javanava 입니다.

질문 간결하게 남기겠습니다 ㅠ

[질문] 아래에 value.BF_PR_QTY_01(작년도 1월 생산량의 합계)를 추가하고 싶습니다.


이전에는 아래와 같은 방법으로 원하는 인덱스의 값만 가져왔었는데

<c:choose>
    		<c:when test="${fn:length(list) > 0 }">
    			<c:forEach items="${list}" var="row" varStatus="status">
    				<c:if test="${status.index eq 1}">
	                             <p>${list[1].BF_YYYY}년 ${list[1].BF_WEEK}주</p>

$.each(data.list, function(key, value){ .. }에서

마지막 인덱스 값만 가져오려면 어떻게 해야할까요?


[문제 코드] 

function fn_selectListCallback(data){
    var body = $("table>tbody");
    body.empty();
    var str = "";
    var total = 0;
      $.each(data.list, function(key, value){
    	  
	     total =   value.CUR_PR_QTY_01 + value.CUR_PR_QTY_02 + value.CUR_PR_QTY_03
	             + value.CUR_PR_QTY_04 + value.CUR_PR_QTY_05 + value.CUR_PR_QTY_06
	             + value.CUR_PR_QTY_07 + value.CUR_PR_QTY_08 + value.CUR_PR_QTY_09
	             + value.CUR_PR_QTY_10 + value.CUR_PR_QTY_11 + value.CUR_PR_QTY_12;
    	 
          str += "<tr>" +
          	      "<td >"+ value.ITEM_TYPE         + "</td>" +
                      "<td>" + value.ITEM_TYPE_MID_NM  + "</td>" +                        
                      "<td>" + value.CUR_PR_QTY_01     + "</td>" +
                      "<td>" + value.CUR_PR_QTY_02     + "</td>" +
                      "<td>" + value.CUR_PR_QTY_03     + "</td>" +
                      "<td>" + value.CUR_PR_QTY_04     + "</td>" +
                      "<td>" + value.CUR_PR_QTY_05     + "</td>" +
                      "<td>" + value.CUR_PR_QTY_06     + "</td>" +
                      "<td>" + value.CUR_PR_QTY_07     + "</td>" +
                      "<td>" + value.CUR_PR_QTY_08     + "</td>" +
                      "<td>" + value.CUR_PR_QTY_09     + "</td>" +
                      "<td>" + value.CUR_PR_QTY_10     + "</td>" +
                      "<td>" + value.CUR_PR_QTY_11     + "</td>" +
                      "<td>" + value.CUR_PR_QTY_12     + "</td>" +
                      "<td>" + total		       + "</td>" +
                "</tr>";
           
                
        });
        body.append(str);
    }


0
0
  • 답변 8

  • 면목동주민
    194
    2017-12-18 16:53:42 작성 2017-12-18 16:59:53 수정됨

    소스상에 key가 index같고..

    어차피 사이즈만큼 for문이 도니깐 리스트 크기만큼 돌겠져?

    맨마지막 인덱스의 값을 원하시면

    중간에 if문으로 ( key == 리스트크기를 담은 변수-1) 랑 같으면 하시려는 행위를 하면 되지 않을 까요? 

    -1한 이유는   each의 index는 0부터 시작~


    0
  • 도각도각
    3k
    2017-12-18 16:55:10

    data.list는 뭔가요.. 구조가 어떻게 생긴거예요?..

    0
  • Majestic
    1k
    2017-12-18 16:55:11 작성 2017-12-18 16:56:27 수정됨

    $("td:last").index(this) 사용하시면 될것같은데여 

    0
  • 도각도각
    3k
    2017-12-18 17:04:48 작성 2017-12-18 17:05:24 수정됨

    data.list가 array잖아요.

    그럼.. $.each(data.list, function (index, object) {} );

    펑션에 첫번째 인자는 index고, 두번째는 object예요.

    물론 이름을 뭘로 줘도 상관이 없기는 하죠.


    index가 data.list.length -1 일때.. 그게 마지막 루프가 되겠죠.

    0
  • javanava
    832
    2017-12-18 17:08:06 작성 2017-12-18 17:10:22 수정됨

    설명이 부족한 것 같아서 추가합니다 ㅠㅠ


    현재 다음과 같은 리포트를 만들어야 합니다. (2017년 총계까지는 만들었습니다.)

    2016년 총계 부분은 ROLLUP(품목, 세부분류)을 사용해 SUM해서 구하였습니다.

    따라서 BF_PR_QTY_10 (2016년  제품별10월 생산의 합계) 칼럼에서

    6,079만 뽑아내서 테이블에 추가해줘야하는데

    잘 모르겠습니다.. (논리적으로 설명해드리지 못해 죄송합니다 ㅠㅠㅠ)


    0
  • 도각도각
    3k
    2017-12-18 17:11:59

    쿼리단에서 총계에 특정 컬럼에 값을 주고.. 뭐 TOTAL이라던가.. 그리고 거르면 간단하지 않을까요?

    0
  • javanava
    832
    2017-12-18 17:57:31 작성 2017-12-18 17:58:34 수정됨

    흠... 이렇게 막해도되나 싶긴하지만 도각도각님 덕분에 해결하였습니다.

    기존 SQL에 Select문을 한번 더 감쌌습니다.

    SELECT DECODE(G_ID, 3 , BF_PR_QTY_01, "CUR_PR_QTY_01") "CUR_PR_QTY_01" 
      FROM (
              SELECT SUM(CUR_PR_QTY_01) "CUR_PR_QTY_01", SUM (BF_PR_QTY_01) "BF_PR_QTY_01"
                     GROUPING_ID(ITEM_TYPE, ITEM_TYPE_MID) "G_ID"
                FROM (.....)
            GROUP BY ROLLUP(ITEM_TYPE, ITEM_TYPE_MID)
    );



    0
  • javanava
    832
    2017-12-18 17:59:35

    답변해주신 선배님 모두 감사드립니다.

    덕분에 오늘도 하나 배워갑니다! :)

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