2014-09-29 2 views
0

저는 여기에 뇌를 싣고있어 빠른 도움이 필요합니다.JavaScript에 문자가 포함 된 경우 객체를 반환하는 방법

나는 다음과 같은 JSON 객체가 있습니다

"product": { 
    "diagnostics": null, 
     "skus": [{ 
      "itemCode": "Q28988", 
      "salesCode": "Q2898800", 
      "listPrice": 22, 
      "salePrice": 22, 
      "numberOfBottles": 1, 
      "salePricePerBottle": 22, 
      "id": "esku580806", 
      "vppApplier": false, 
      "vppPrice": null, 
      "vppDiscountPct": null 
     }, { 
      "itemCode": "C28988", 
      "salesCode": "C2898800", 
      "listPrice": 264, 
      "salePrice": 264, 
      "numberOfBottles": 12, 
      "salePricePerBottle": 22, 
      "id": "esku580811", 
      "vppApplier": false, 
      "vppPrice": null, 
      "vppDiscountPct": null 
     }], 
      "id": "eprod440905", 
} 

을 그리고 나는 SKU를 배열을 필터 만 문자 'Q'로 시작 itemCodes를 반환해야합니다. 나는 밑줄과 자바 스크립트를 사용하고 있는데, 이것은 내가 얻을 수있는 가장 가까운 것이지만, 아무것도 반환하지 않는 것처럼 보입니다.

var codes = _.filter($scope.cb.recommendations, function(obj){ 
      var startLetter = obj.product.skus.slice(); 
      return startLetter[0] === 'Q'; 
     }); 

$ scope.cb.recommendations는 JSON 개체입니다. 스 니펫은 위에 있습니다. 큰 감사를 드린다!

+0

SKU 개체의 배열뿐만 아니라 "itemCode"필드를보고 싶지 않으십니까? – Pointy

+0

예, 할 수 있습니다. 그렇지? obj.product.skus []. itemCode - 실패 할 것 같습니다. – jrutter

+0

'$ scope.cb.recommendations' 란 무엇입니까? 'obj.product.skus'를 걸러 내고 싶습니다. 'Q'로 시작하는'itemCode'를 가지는 sku 엘리먼트가되기를 원하는가, 아니면 아이템 코드 배열을 원합니까? –

답변

1

$scope.cb.recommendations은 무엇인지 설명하지 않으므로 한 제품에 대해 skus 배열을 필터링하는 방법을 보여줍니다.

var codes = []; 
_.filter(
    obj.product.skus, 
    function(sku) { 
     if (sku.itemCode[0] === 'Q') { 
      this.push(sku.itemCode); 
     } 
    }, 
    codes 
); 
0
밑줄없는

이며 1 'Q 항목'경우 존재할 수있다 :

function findQ(skus) { 
    var len = skus.length; 
    while(len--) { 
    if(skus[len].itemCode.indexOf('Q') === 0) 
     return skus[len]; 
    } 
} 

var item = findQ(json.product.skus); 

http://jsfiddle.net/8pb13cdj/

트릭 술어 함수 내에 this 결합 도착 _.filter에 세 번째 인자를 전달하는
관련 문제