我在这里绞尽脑汁,需要一些快速的帮助。
我有以下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",
}
我需要过滤skus数组,只返回以字母“Q'”开头的itemCodes。我使用下划线和JavaScript,这是我能得到的最接近的,但它似乎没有返回任何东西。
var codes = _.filter($scope.cb.recommendations, function(obj){
var startLetter = obj.product.skus.slice();
return startLetter[0] === 'Q';
});
$ scope.cb.recommendations是JSON对象 - 上面的代码片段。非常感谢!
答案 0 :(得分:1)
您没有解释$scope.cb.recommendations
是什么,因此我将展示如何过滤一个产品的skus
数组。诀窍是将第三个参数传递给_.filter
,它在谓词函数中绑定到this
:
var codes = [];
_.filter(
obj.product.skus,
function(sku) {
if (sku.itemCode[0] === 'Q') {
this.push(sku.itemCode);
}
},
codes
);
答案 1 :(得分:0)
没有下划线,只有1' Q-item'可能存在:
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);