对一组对象进行排序?

时间:2016-05-29 01:02:54

标签: javascript sorting

我有以下数据结构,并且我坚持根据价格按升序对所有项目中的所有变体进行排序。

理想情况下,我需要一种方法来查找任何商品变体的最低价格,同时仍然可以访问变体的父级。

var items = [
{
    "id" : 1 ,
    "name" : "name1",
    "variations" : [
        {
            "subId" : 1000011,
            "subName" : "name1a",
            "price" : 19.99
        },
        {
            "subId" : 1000012,
            "subName" : "name1b",
            "price" : 53.21
        },
        {
            "subId" : 1000013,
            "subName" : "name1c",
            "price" : 9.49

        }
    ]

},
{
    "id" : 2, 
    "name" : "name2",
    "variations" : [
        {
            "subId" : 1000021,
            "subName" : "name2a",
            "price" : 99.29
        },
        {
            "subId" : 1000022,
            "subName" : "name2b",
            "price" : 104.99
        },
        {
            "subId" : 1000023,
            "subName" : "name2c",
            "price" : 38.00

        }
    ]

}

];

3 个答案:

答案 0 :(得分:1)

您可以使用以下代码执行此操作:

items.forEach(function(item){
  var variations = item.variations.sort(function(a, b){
    return b.price - a.price;
  });
  console.log(variations);
});

将为items数组中的每个项调用此函数。如果您只想订购items数组中的第一个,第二个或n项,则需要使用以下内容:

var variations = items[0].variations.sort(function(a, b){
  return b.price - a.price;
});
console.log(variations);

items[0]表示您要订购的商品。

如你所见:

function(a, b){
  return b.price - a.price;
}

是从item数组命令每个数组items的最终结果的函数。使用the sort function。您可以阅读有关比较函数如何对数组项进行排序的更多信息。

  

数组元素根据比较函数的返回值

进行排序

答案 1 :(得分:0)

查看此jsbin example

var sortedByPrice = items.map(function(item) {
  item.variations.sort(function(a, b) {
    return a.price - b.price;
  });

  return item;
});

console.log(sortedByprice);

只需映射它们并根据变化的价格进行排序。

答案 2 :(得分:0)

.json中有一些语法错误/错误类型。修复后你可以使用这样的东西:

end()

更新1

如果您想要更多结构解决方案,请使用:

var items = [
{
    "id" : 1 ,
    "name" : "name1",
    "variations" : [
        {
            "subId" : 1000011,
            "subName" : "name1a",
            "price" : 19.99
        },
        {
          "subId" : 1000012,
            "subName" : "name1b",
            "price" : 53.21
        },
        {
          "subId" : 1000013,
            "subName" : "name1c",
            "price" : 9.49

        }
    ]

},
{
    "id" : 2, 
    "name" : "name2",
    "variations" : [
        {
            "subId" : 1000021,
            "subName" : "name2a",
            "price" : 99.29
        },
        {
          "subId" : 1000022,
            "subName" : "name2b",
            "price" : 104.99
        },
        {
          "subId" : 1000023,
            "subName" : "name2c",
            "price" : 38.00

        }
    ]

}

];
items;

items.sort(function(a,b){
  var mina=a.variations.sort(function(x,y){
       return x.price - y.price;
     })[0].price; //find minimal price in 1st variations
  var minb=b.variations.sort(function(x,y){
       return x.price - y.price;
    })[0].price; // in 2nd variations
return mina - minb; //what compare returns 
});

可以调用更多结构。

相关问题