0

I developed E-commerce app.

I have a list of products.

Here is my array:

[
   {
        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,
        }
   }
]

I need to sort based on PRICE_SALE.

Low to High and high to low.

I tried this:

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

But it's not work.

vaishu ani
  • 107
  • 1
  • 16
  • *But it's not work* In what way? Run-time error? Unexpected results? By the way, the values of the `Desc` property should be quoted. –  Jul 22 '17 at 06:02
  • You should look into this issue: https://stackoverflow.com/questions/979256/sorting-an-array-of-javascript-objects – Tejashwi Kalp Taru Jul 22 '17 at 06:04
  • Thanks for ur reply.No i don't get error msg.But Does not display the order.I need sort to Low to High and high to low. – vaishu ani Jul 22 '17 at 06:04

2 Answers2

2

Turn your array element to object:

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,
        }
   }
];

See the result:

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
})
RobG
  • 142,382
  • 31
  • 172
  • 209
Burdy
  • 603
  • 4
  • 11
1

If you fix the quoting problem on Desc your code works fine. Note that the sort() method sorts the array in place. It also returns the sorted array, but don't let that fool you into thinking that it makes a copy of the array and sorts that (e.g. .sort() does not work like array.slice() which copies an array in full or part and returns the copy).

var products = [
   {
        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,
        }
   }
];

products.sort( function( a, b ) {
 return a.details.PRICE_SALE - b.details.PRICE_SALE;
});

console.log( JSON.stringify( products, null, 4 ) );
Michael Geary
  • 28,450
  • 9
  • 65
  • 75