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 配列で検索する必要があります。アンダースコアfindWhereが役立ちます。

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