Javascript 对象排序数组

Javascript 对象排序数组,javascript,Javascript,我开发了电子商务应用程序 我有一份产品清单 这是我的阵列: [ { Desc:Commodo adipisicing officia non excepteur officia nostrud, details:{ "P_TITLE" : "Martina", "P_TYPE" : "simple", "P_DESCRIPTION" : "Commodo adipisicing offi

我开发了电子商务应用程序

我有一份产品清单

这是我的阵列:

[
   {
        Desc:Commodo adipisicing officia non excepteur officia nostrud,
        details:{
            "P_TITLE" : "Martina",
            "P_TYPE" : "simple",
            "P_DESCRIPTION" : "Commodo adipisicing officia non excepteur officia nostrud. Eu voluptate amet elit nulla.",
            "P_STOCK" : 100.0,
            "PRICE_REGULAR" : 194.0,
            "PRICE_SALE" : 161.0,
        }
   },
   {
        Desc:Laborum cupidatat dolor tempor cillum incididunt,
        details:{
            "P_TITLE" : "Martina",
            "P_TYPE" : "simple",
            "P_DESCRIPTION" : "Laborum cupidatat dolor tempor cillum incididunt in veniam nisi dolore.Eu voluptate amet elit nulla.",
            "P_STOCK" : 100.0,
            "PRICE_REGULAR" : 194.0,
            "PRICE_SALE" : 80.0,
        }
   },
   {
        Desc:Anim ad et sunt aliquip proident,
        details:{
            "P_TITLE" : "Martina",
            "P_TYPE" : "simple",
            "P_DESCRIPTION" : "Anim ad et sunt aliquip proident fugiat deserunt.Eu voluptate amet elit nulla.",
            "P_STOCK" : 100.0,
            "PRICE_REGULAR" : 194.0,
            "PRICE_SALE" : 150.0,
        }
   },
   {
        Desc:Eiusmod aliquip eu aute elit eiusmod proident,
        details:{
            "P_TITLE" : "Martina",
            "P_TYPE" : "simple",
            "P_DESCRIPTION" : "Eiusmod aliquip eu aute elit eiusmod proident.Eu voluptate amet elit nulla.",
            "P_STOCK" : 100.0,
            "PRICE_REGULAR" : 194.0,
            "PRICE_SALE" : 130.0,
        }
   }
]
我需要根据
价格\u销售额
进行排序

Low to High and high to low.
我试过这个:

var a=this.product.sort(function(a, b){
                  console.log("SORT");
                  return a.details.PRICE_SALE-b.details.PRICE_SALE;
                })

但是它不起作用。

如果您在
Desc
上解决了报价问题,那么您的代码工作正常。请注意,
sort()
方法对数组进行适当排序。它还返回已排序的数组,但不要因此而误以为它是数组的副本,并对其进行排序(例如,
.sort()
不像
array.slice()
那样将数组全部或部分复制并返回副本)

var产品=[
{
描述:“非例外的官方商品”,
详情:{
“P_TITLE”:“Martina”,
“P_类型”:“简单”,
“P_说明”:“非例外的官方共同声明。欧盟将对美国精英无异议。”,
“P_股票”:100.0,
“常规价格”:194.0,
“价格销售”:161.0,
}
},
{
描述:“临时纤毛的产房”,
详情:{
“P_头衔”:“玛蒂娜”,
“P_类型”:“简单”,
“P_描述”:“veniam nisi dolore的临时劳工。欧盟对精英无任何贡献。”,
“P_股票”:100.0,
“常规价格”:194.0,
“销售价格”:80.0,
}
},
{
描述:“动物和动物必须是一个骄傲的人”,
详情:{
“P_头衔”:“玛蒂娜”,
“P_类型”:“简单”,
“P_DESCRIPTION”:“动物和动物都必须有一个自以为是的身份,因为它是一个无价值的人。”,
“P_股票”:100.0,
“常规价格”:194.0,
“销售价格”:150.0,
}
},
{
描述:“Eiusmod aliquip eu aute elit Eiusmod proident”,
详情:{
“P_头衔”:“玛蒂娜”,
“P_类型”:“简单”,
“P_说明”:“Eiusmod aliquip eu aute elit Eiusmod proident.eu voluptate amet elit nulla.”,
“P_股票”:100.0,
“常规价格”:194.0,
“销售价格”:130.0,
}
}
];
产品.分类(功能(a,b){
返回a.details.PRICE\u SALE-b.details.PRICE\u SALE;
});

log(JSON.stringify(products,null,4))如果您修复了
Desc
上的报价问题,则代码工作正常。请注意,
sort()
方法对数组进行适当排序。它还返回已排序的数组,但不要因此而误以为它是数组的副本,并对其进行排序(例如,
.sort()
不像
array.slice()
那样将数组全部或部分复制并返回副本)

var产品=[
{
描述:“非例外的官方商品”,
详情:{
“P_头衔”:“玛蒂娜”,
“P_类型”:“简单”,
“P_说明”:“非例外的官方共同声明。欧盟将对美国精英无异议。”,
“P_股票”:100.0,
“常规价格”:194.0,
“价格销售”:161.0,
}
},
{
描述:“临时纤毛的产房”,
详情:{
“P_头衔”:“玛蒂娜”,
“P_类型”:“简单”,
“P_描述”:“veniam nisi dolore的临时劳工。欧盟对精英无任何贡献。”,
“P_股票”:100.0,
“常规价格”:194.0,
“销售价格”:80.0,
}
},
{
描述:“动物和动物必须是一个骄傲的人”,
详情:{
“P_头衔”:“玛蒂娜”,
“P_类型”:“简单”,
“P_DESCRIPTION”:“动物和动物都必须有一个自以为是的身份,因为它是一个无价值的人。”,
“P_股票”:100.0,
“常规价格”:194.0,
“销售价格”:150.0,
}
},
{
描述:“Eiusmod aliquip eu aute elit Eiusmod proident”,
详情:{
“P_头衔”:“玛蒂娜”,
“P_类型”:“简单”,
“P_说明”:“Eiusmod aliquip eu aute elit Eiusmod proident.eu voluptate amet elit nulla.”,
“P_股票”:100.0,
“常规价格”:194.0,
“销售价格”:130.0,
}
}
];
产品.分类(功能(a,b){
返回a.details.PRICE\u SALE-b.details.PRICE\u SALE;
});

log(JSON.stringify(products,null,4))将数组元素转换为对象:

var arr = [
   {
        "Desc" : "Commodo adipisicing officia non excepteur officia nostrud",
        "details" :{
            "P_TITLE" : "Martina",
            "P_TYPE" : "simple",
            "P_DESCRIPTION" : "Commodo adipisicing officia non excepteur officia nostrud. Eu voluptate amet elit nulla.",
            "P_STOCK" : 100.0,
            "PRICE_REGULAR" : 194.0,
            "PRICE_SALE" : 161.0,
        }
   },
   {
        "Desc": "Laborum cupidatat dolor tempor cillum incididunt",
        "details":{
            "P_TITLE" : "Martina",
            "P_TYPE" : "simple",
            "P_DESCRIPTION" : "Laborum cupidatat dolor tempor cillum incididunt in veniam nisi dolore.Eu voluptate amet elit nulla.",
            "P_STOCK" : 100.0,
            "PRICE_REGULAR" : 194.0,
            "PRICE_SALE" : 80.0,
        }
   },
   {
        "Desc" : "Anim ad et sunt aliquip proident",
        "details":{
            "P_TITLE" : "Martina",
            "P_TYPE" : "simple",
            "P_DESCRIPTION" : "Anim ad et sunt aliquip proident fugiat deserunt.Eu voluptate amet elit nulla.",
            "P_STOCK" : 100.0,
            "PRICE_REGULAR" : 194.0,
            "PRICE_SALE" : 150.0,
        }
   },
   {
        "Desc":"Eiusmod aliquip eu aute elit eiusmod proident",
        "details":{
            "P_TITLE" : "Martina",
            "P_TYPE" : "simple",
            "P_DESCRIPTION" : "Eiusmod aliquip eu aute elit eiusmod proident.Eu voluptate amet elit nulla.",
            "P_STOCK" : 100.0,
            "PRICE_REGULAR" : 194.0,
            "PRICE_SALE" : 130.0,
        }
   }
];
见结果:

var a = arr.sort(function(a, b){
    return a.details.PRICE_SALE - b.details.PRICE_SALE;
})

a.forEach(function(ele) {
    console.log(ele.details.PRICE_SALE); // 80, 130, 150, 161
})

将数组元素转换为对象:

var arr = [
   {
        "Desc" : "Commodo adipisicing officia non excepteur officia nostrud",
        "details" :{
            "P_TITLE" : "Martina",
            "P_TYPE" : "simple",
            "P_DESCRIPTION" : "Commodo adipisicing officia non excepteur officia nostrud. Eu voluptate amet elit nulla.",
            "P_STOCK" : 100.0,
            "PRICE_REGULAR" : 194.0,
            "PRICE_SALE" : 161.0,
        }
   },
   {
        "Desc": "Laborum cupidatat dolor tempor cillum incididunt",
        "details":{
            "P_TITLE" : "Martina",
            "P_TYPE" : "simple",
            "P_DESCRIPTION" : "Laborum cupidatat dolor tempor cillum incididunt in veniam nisi dolore.Eu voluptate amet elit nulla.",
            "P_STOCK" : 100.0,
            "PRICE_REGULAR" : 194.0,
            "PRICE_SALE" : 80.0,
        }
   },
   {
        "Desc" : "Anim ad et sunt aliquip proident",
        "details":{
            "P_TITLE" : "Martina",
            "P_TYPE" : "simple",
            "P_DESCRIPTION" : "Anim ad et sunt aliquip proident fugiat deserunt.Eu voluptate amet elit nulla.",
            "P_STOCK" : 100.0,
            "PRICE_REGULAR" : 194.0,
            "PRICE_SALE" : 150.0,
        }
   },
   {
        "Desc":"Eiusmod aliquip eu aute elit eiusmod proident",
        "details":{
            "P_TITLE" : "Martina",
            "P_TYPE" : "simple",
            "P_DESCRIPTION" : "Eiusmod aliquip eu aute elit eiusmod proident.Eu voluptate amet elit nulla.",
            "P_STOCK" : 100.0,
            "PRICE_REGULAR" : 194.0,
            "PRICE_SALE" : 130.0,
        }
   }
];
见结果:

var a = arr.sort(function(a, b){
    return a.details.PRICE_SALE - b.details.PRICE_SALE;
})

a.forEach(function(ele) {
    console.log(ele.details.PRICE_SALE); // 80, 130, 150, 161
})

但它不是以什么方式工作的?运行时错误?意外的结果?顺便说一句,应该引用
Desc
属性的值。您应该研究这个问题:谢谢您的回复。不,我没有收到错误消息。但不显示顺序。我需要排序到从低到高和从高到低。但它以什么方式不起作用?运行时错误?意外的结果?顺便说一下,应该引用
Desc
属性的值。您应该研究这个问题:谢谢您的回复。不,我没有收到错误消息。但不显示顺序。我需要排序到从低到高和从高到低。