使用Underscore对JavaScript / JSON对象进行排序

时间:2013-08-21 10:13:57

标签: underscore.js

我想根据每个产品的裤子库存水平对下面的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: ""
                },
            ]
        }
    ]
}

1 个答案:

答案 0 :(得分:1)

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

将为每个已排序的对象(即此处的“shop”对象)调用赋给sortBy的迭代器函数。当你想要返回裤子的库存水平时,你需要得到那个物体。如果你不知道它在哪里,你需要先在产品数组中搜索它,Underscore的findWhere会帮助你。

var sortedArray = _.sortBy(templateData.looks, function(shop) {
    return _.findWhere(shop.products, {name:"Trousers"}).stock_level;
});