我想根据每个产品的裤子库存水平对下面的JSON文件进行排序,但我不确定如何使用_.sortBy函数编写代码,我开始但不确定我是如何专门定位的裤子的库存水平。它应该是最低的库存水平。有任何想法吗?谢谢!
SCRIPT:
var sortedArray = _.sortBy(templateData, function(stocklevel) {
return stocklevel[0].looks
});
JSON:
var templateData = {
listTitle: "Shop by Look",
looks: [
{
id: "Sportswear Look 1",
products: [
{
name: "Shirt",
pid: "50",
stock_level: 1,
image: "img/look1.jpg"
},
{
name: "Trousers",
pid: "40",
stock_level: 7,
image: ""
},
]
},
{
id: "Sportswear Look 2",
products: [
{
name: "Shirt",
pid: "50",
stock_level:5,
image: "img/look2.jpg"
},
{
name: "Trousers",
pid: "40",
stock_level: 16,
image: ""
},
]
}
]
}
答案 0 :(得分:1)
首先,您需要对templateData.looks
数组进行排序,而不是templateData
包装器对象。
将为每个已排序的对象(即此处的“shop”对象)调用赋给sortBy
的迭代器函数。当你想要返回裤子的库存水平时,你需要得到那个物体。如果你不知道它在哪里,你需要先在产品数组中搜索它,Underscore的findWhere
会帮助你。
var sortedArray = _.sortBy(templateData.looks, function(shop) {
return _.findWhere(shop.products, {name:"Trousers"}).stock_level;
});