0

我想通过专门针对每种产品的裤子库存水平对下面的 JSON 文件进行排序,但我不确定如何使用函数 _.sortBy 编写代码,我开始了但不确定我如何专门针对库存水平的裤子。首先应该是最低库存水平。有任何想法吗?谢谢!

脚本:

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: ""
                },
            ]
        }
    ]
}
4

1 回答 1

1

首先,您需要对templateData.looks数组进行排序,而不是templateData包装对象。

给定的迭代器函数sortBy将与每个排序对象一起调用,即这里的“商店”对象。当您想返回裤子的库存水平时,您需要获取该对象。如果您不知道它在哪里,您首先需要在 products 数组中搜索它,UnderscorefindWhere会帮助您。

var sortedArray = _.sortBy(templateData.looks, function(shop) {
    return _.findWhere(shop.products, {name:"Trousers"}).stock_level;
});
于 2013-08-21T11:08:58.257 回答