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.

3
  • 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. Commented Jul 22, 2017 at 6:02
  • You should look into this issue: stackoverflow.com/questions/979256/… Commented Jul 22, 2017 at 6: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. Commented Jul 22, 2017 at 6:04

2 Answers 2

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
})
Sign up to request clarification or add additional context in comments.

Comments

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 ) );

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.