下面是示例JSON数据
"items": [{
"id": "18",
"attributes": [{
"identifier": "Style",
"value": "peacock"
}, {
"identifier": "Size",
"value": "L"
}]
},
{
"id": "300438",
"attributes": [{
"identifier": "Style",
"value": "peacock"
}, {
"identifier": "Size",
"value": "M"
}]
}]
我需要获取项目ID,其中Style = peacock和Size = L. 我怎么能用骨干做到这一点?
我制作了一个类似
的集合var itemsCollection = new IEA.Collection(itemsData)
这包含所有项目。
答案 0 :(得分:0)
underscore.js不支持过滤嵌套对象,可以使用过滤器和where函数之间的组合
filteredItems = itemsCollection.filter(function(item) {
return _.where(item.get("attributes"), {
"identifier": "Style",
"value": "peacock"
}).length > 0 &&
_.where(item.get("attributes"), {
"identifier": "Size",
"value": "M"
}).length > 0;
});
答案 1 :(得分:0)
Alternate.I通过创建新数组并在其中存储所需的值来简化JSON。 然后我用骨干在哪里返回id的方法。
productData.items.forEach(function(item, index) {
var data = {'id': item.id};
item.attributes.forEach(function(attribute) {
data[attribute.identifier] = attribute.value
});
productVariants.push(data);
});
var itemsCollection = new backbone.Collection(productVariants);