2017-04-03 6 views
0

나는 다음과 같은 객체 배열이 왜 다음과 같은 점 표기법 아무것도 기록하지 않습니다 underscore.js를 사용Underscore.js - 객체 배열을 통해 반복

var products = [ 
    { 
     id: 1, 
     name: "Product 1", 
     subTypes: [ 
      { 
       id: 1, 
       name: "Product 1 - Sub Type 1" 
      }, 
      { 
       id: 2, 
       name: "Product 1 - Sub Type 2" 
      } 
     ] 
    }, 
    { 
     id: 2, 
     name: "Product 2", 
     subTypes: [ 
      { 
       id: 1, 
       name: "Product 2 - Sub Type 1" 
      }, 
      { 
       id: 2, 
       name: "Product 2 - Sub Type 2" 
      } 
     ] 
    } 
]; 

가 콘솔로 :

_.each(products.subTypes, function(subType) { 
     console.log(subType.name); 
}); 

내가 할 수있는을 다음과 같이 foreach 루프를 중첩하여 작동 시키십시오.

_.each(products, function (product) { 
    _.each(product.subTypes, function (subType) { 
     console.log(subType.name); 
    }); 
}); 
+2

[0] .subTypes와 [1] .subTypes 이상 코드 등 –

+0

귀하의 마지막 조각 제품은 정확하게 올바른 더 products.subTypes 없다 인수. 객체의 배열 내에 객체의 배열이 속성으로 있습니다. 두 번 반복해야합니다. 단일 객체의 속성에 액세스하려고 시도 할 때'products.subTypes'로 액세스 할 수 없습니다. – G0dsquad

답변

0

당신은

console.log('Subtypes:', products.subTypes.name); 
0

당신은 당신이 먼저 객체에서 그들을 추출해야 product.subTypes에 액세스하려는 경우 확인할 수 있습니다.

다음은 어떻게 사용하나요? 3 가지 예제 함수 : 순수 자바 스크립트, ES6, 밑줄. 당신이 제품과 같은 뭔가가 필요 가리키고

// pure JS 
 
function pureJsloop(data) { 
 
    var result = []; 
 

 
    for (i = 0; i < data.length; i++) { 
 
    var product = data[i]; 
 
    
 
    result.push(product.subTypes); 
 

 
    } 
 
    
 
    return result[0]; 
 
} 
 

 
// ES6 
 
function ES6loop(data) { 
 
    // We are returning reduced array 
 
    return data.reduce((previous, product) => { 
 
    return previous = [ ...previous, product.subTypes ]; 
 
    }, [])[0]; 
 
} 
 

 
// Underscore 
 
function underscoreLoop(data) { 
 

 
    return _.reduce(data, function(previous, product){ 
 
    return previous = [ ...previous, product.subTypes ]; 
 
    }, [])[0]; 
 
    
 
} 
 

 

 
var products = [ 
 
       { 
 
       id: 1, 
 
       name: "Product 1", 
 
       subTypes: [ 
 
        { 
 
        id: 1, 
 
        name: "Product 1 - Sub Type 1" 
 
        }, 
 
        { 
 
        id: 2, 
 
        name: "Product 1 - Sub Type 2" 
 
        } 
 
       ] 
 
       }, 
 
       { 
 
       id: 2, 
 
       name: "Product 2", 
 
       subTypes: [ 
 
        { 
 
        id: 1, 
 
        name: "Product 2 - Sub Type 1" 
 
        }, 
 
        { 
 
        id: 2, 
 
        name: "Product 2 - Sub Type 2" 
 
        } 
 
       ] 
 
       }]; 
 
       
 

 

 
//console.log(pureJsloop(products)); 
 
//console.log(ES6loop(products)); 
 
console.log(underscoreLoop(products));
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>