2016-10-19 3 views
-1

입니다 :자바 스크립트 배열 내가이 답변의 코드를 구현 0

var mapByShop = function(arr, groupName) { 
     return arr.reduce(function(result, item) { 
     result[item[groupName]] = result[item[groupName]] || []; 
     result[item[groupName]][item["productId"]] = item; 
      return result; 
     }, {}); 
    }; 
    console.log("Response", response.data); 

    $scope.productList = mapByShop(response.data, "shopName"); 
    console.log("productList", $scope.productList); 

코드는 잘 작동 : 배열에 더 productdetails이 그래서 내가 코드를 조금 변경

javascript group by in array 기사 객체가있는 객체가있는 상점 이름이있는 배열을 만듭니다. 당신이 볼 수 있듯이

Shopname 1:Array[0] 
    57ab0360741496001e37586c:Object 
     image:"http://pathtoimage.nl/image.jpg" 
     name:"Product Name" 
     price:32.23 
     productId:"57ab0360741496001e37586c" 
     productNumber:"ProductNumer 123" 
     quantity:1 
     shopId:"56699123a9c7a38740a31251" 
     shopName:"Shopname 1" 
    57ab0360741496001e375867:Object 
     {same properties as object above} 

Shopname 2:Array[0] 
    57bc15ad732b2de02145fe8e:Object 
     {same properties as object above} 
    57bc15ad732b2de02145fe8f:Object 
     {same properties as object above} 
    57bc15ad732b2de02145fe90:Object 
     {same properties as object above} 
    57d157d10b90631c31466329:Object 
     {same properties as object above} 
    57d158fe0b90631c31466331:Object 
     {same properties as object above} 

에서, Shopnames 후, Array[0]을 말한다 (크롬 콘솔에서 복사) 표기법이 : 같은 예를 들어, 배열 보인다. 이 배열의 내용을 각도 ng-repeat으로 보여주고 싶지만 그 방법도 효과가 없습니다.

어떻게 해결할 수 있습니까? 나는 자바 스크립트로 꽤 새로워 졌으므로 예제는 괜찮을 것이다.

+1

배열 [0]은 값이없는 배열을 의미합니다. var b = new Array()와 유사합니다. console.log (b) ==> 배열 [0] – abhirathore2006

+1

결과 [item [groupName]] = 결과 [item [groupName]] || []; 배열을 잘못 사용하거나 오해하고 있습니다. 배열로 밀거나 [] 대신 {}을 사용하여 배열을 만들거나 개체, 다음 배열을 잊지 –

+0

그래, {}는 속임수 였어! – NVO

답변

0

{}을 (를) 사용하여이 문제를 해결했습니다.

var mapByShop = function(arr, groupName) { 
        return arr.reduce(function(result, item) { 
        result[item[groupName]] = result[item[groupName]] || {}; 
        result[item[groupName]][item["productId"]] = item; 
         return result; 
        }, {}); 
      };