0

I get a response with JSON data, how do I sort JSON using Javascript?

this is my first time trying to sort JSON data.

this is the JSON data

  {
    "status": true,
    "data": [
        {
            "birthDate": "1984-03-04T00:00:00.000Z",
            "birthPlace": "Jakarta",
            "createdAt": "2019-01-11T01:55:18.254Z",
            "gender": "female",
            "id": "-LVubjI0TYQOoa3uE06L",
            "totalReferredUser": 6
        },
        {
            "birthDate": "1987-03-04T00:00:00.000Z",
            "birthPlace": "Jakarta",
            "createdAt": "2019-01-11T01:55:18.254Z",
            "gender": "female",
            "id": "-LVubjI0TYQOoa3uE06L",
            "totalReferredUser": 0
        },
        {
            "birthDate": "1982-03-04T00:00:00.000Z",
            "birthPlace": "Jakarta",
            "createdAt": "2019-01-11T01:55:18.254Z",
            "gender": "female",
            "id": "-LVubjI0TYQOoa3uE06L",
            "totalReferredUser": 0
        },
        {
            "birthDate": "1989-03-04T00:00:00.000Z",
            "birthPlace": "Jakarta",
            "createdAt": "2019-01-11T01:55:18.254Z",
            "gender": "female",
            "id": "-LVubjI0TYQOoa3uE06L",
            "totalReferredUser": 0
        },
        {
            "birthDate": "1984-03-04T00:00:00.000Z",
            "birthPlace": "Jakarta",
            "createdAt": "2019-01-11T01:55:18.254Z",
            "gender": "female",
            "id": "-LVubjI0TYQOoa3uE06L",
            "totalReferredUser": 2
        },
        {
            "birthDate": "1985-03-04T00:00:00.000Z",
            "birthPlace": "Jakarta",
            "createdAt": "2019-01-11T01:55:18.254Z",
            "gender": "female",
            "id": "-LVubjI0TYQOoa3uE06L",
            "totalReferredUser": 4
        },
        {
            "birthDate": "1983-03-04T00:00:00.000Z",
            "birthPlace": "Jakarta",
            "createdAt": "2019-01-11T01:55:18.254Z",
            "gender": "female",
            "id": "-LVubjI0TYQOoa3uE06L",
            "totalReferredUser": 1
        },
        {
            "birthDate": "1985-03-04T00:00:00.000Z",
            "birthPlace": "Jakarta",
            "createdAt": "2019-01-11T01:55:18.254Z",
            "gender": "female",
            "id": "-LVubjI0TYQOoa3uE06L",
            "totalReferredUser": 0
        }
    ]
}

I want to sort from the biggest to the smallest totalReferredUser 6 totalReferredUser 4 totalReferredUser 2 totalReferredUser 1 totalReferredUser 0

How to?

Hien Nguyen
  • 24,551
  • 7
  • 52
  • 62
  • What you have posted is NOT JSON. JSON is a string. You've posted a JavaScript Object Literal. To sort it, you'll have to parse each object in the `data` property. – Randy Casburn Jun 20 '19 at 16:23

3 Answers3

1

The Array.sort() is already available in javascript you can sort with any criteria using callback sort() function.

let Obj=  {
        "status": true,
        "data": [
            {
                "birthDate": "1984-03-04T00:00:00.000Z",
                "birthPlace": "Jakarta",
                "createdAt": "2019-01-11T01:55:18.254Z",
                "gender": "female",
                "id": "-LVubjI0TYQOoa3uE06L",
                "totalReferredUser": 6
            },
            {
                "birthDate": "1987-03-04T00:00:00.000Z",
                "birthPlace": "Jakarta",
                "createdAt": "2019-01-11T01:55:18.254Z",
                "gender": "female",
                "id": "-LVubjI0TYQOoa3uE06L",
                "totalReferredUser": 0
            },
            {
                "birthDate": "1982-03-04T00:00:00.000Z",
                "birthPlace": "Jakarta",
                "createdAt": "2019-01-11T01:55:18.254Z",
                "gender": "female",
                "id": "-LVubjI0TYQOoa3uE06L",
                "totalReferredUser": 0
            },
            {
                "birthDate": "1989-03-04T00:00:00.000Z",
                "birthPlace": "Jakarta",
                "createdAt": "2019-01-11T01:55:18.254Z",
                "gender": "female",
                "id": "-LVubjI0TYQOoa3uE06L",
                "totalReferredUser": 0
            },
            {
                "birthDate": "1984-03-04T00:00:00.000Z",
                "birthPlace": "Jakarta",
                "createdAt": "2019-01-11T01:55:18.254Z",
                "gender": "female",
                "id": "-LVubjI0TYQOoa3uE06L",
                "totalReferredUser": 2
            },
            {
                "birthDate": "1985-03-04T00:00:00.000Z",
                "birthPlace": "Jakarta",
                "createdAt": "2019-01-11T01:55:18.254Z",
                "gender": "female",
                "id": "-LVubjI0TYQOoa3uE06L",
                "totalReferredUser": 4
            },
            {
                "birthDate": "1983-03-04T00:00:00.000Z",
                "birthPlace": "Jakarta",
                "createdAt": "2019-01-11T01:55:18.254Z",
                "gender": "female",
                "id": "-LVubjI0TYQOoa3uE06L",
                "totalReferredUser": 1
            },
            {
                "birthDate": "1985-03-04T00:00:00.000Z",
                "birthPlace": "Jakarta",
                "createdAt": "2019-01-11T01:55:18.254Z",
                "gender": "female",
                "id": "-LVubjI0TYQOoa3uE06L",
                "totalReferredUser": 0
            }
        ]
    };

    // sort by totalReferredUser
    Obj.data.sort(function (a, b) {
      return b.totalReferredUser  - a.totalReferredUser ;
    });

reference : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

ramy badr
  • 21
  • 4
0

You can use sort method as

obj.data.sort((a, b) => b.totalReferredUser - a.totalReferredUser);

var obj = {
    "status": true,
    "data": [
        {
            "birthDate": "1984-03-04T00:00:00.000Z",
            "birthPlace": "Jakarta",
            "createdAt": "2019-01-11T01:55:18.254Z",
            "gender": "female",
            "id": "-LVubjI0TYQOoa3uE06L",
            "totalReferredUser": 6
        },
        {
            "birthDate": "1987-03-04T00:00:00.000Z",
            "birthPlace": "Jakarta",
            "createdAt": "2019-01-11T01:55:18.254Z",
            "gender": "female",
            "id": "-LVubjI0TYQOoa3uE06L",
            "totalReferredUser": 0
        },
        {
            "birthDate": "1982-03-04T00:00:00.000Z",
            "birthPlace": "Jakarta",
            "createdAt": "2019-01-11T01:55:18.254Z",
            "gender": "female",
            "id": "-LVubjI0TYQOoa3uE06L",
            "totalReferredUser": 0
        },
        {
            "birthDate": "1989-03-04T00:00:00.000Z",
            "birthPlace": "Jakarta",
            "createdAt": "2019-01-11T01:55:18.254Z",
            "gender": "female",
            "id": "-LVubjI0TYQOoa3uE06L",
            "totalReferredUser": 0
        },
        {
            "birthDate": "1984-03-04T00:00:00.000Z",
            "birthPlace": "Jakarta",
            "createdAt": "2019-01-11T01:55:18.254Z",
            "gender": "female",
            "id": "-LVubjI0TYQOoa3uE06L",
            "totalReferredUser": 2
        },
        {
            "birthDate": "1985-03-04T00:00:00.000Z",
            "birthPlace": "Jakarta",
            "createdAt": "2019-01-11T01:55:18.254Z",
            "gender": "female",
            "id": "-LVubjI0TYQOoa3uE06L",
            "totalReferredUser": 4
        },
        {
            "birthDate": "1983-03-04T00:00:00.000Z",
            "birthPlace": "Jakarta",
            "createdAt": "2019-01-11T01:55:18.254Z",
            "gender": "female",
            "id": "-LVubjI0TYQOoa3uE06L",
            "totalReferredUser": 1
        },
        {
            "birthDate": "1985-03-04T00:00:00.000Z",
            "birthPlace": "Jakarta",
            "createdAt": "2019-01-11T01:55:18.254Z",
            "gender": "female",
            "id": "-LVubjI0TYQOoa3uE06L",
            "totalReferredUser": 0
        }
    ]
};

obj.data.sort((a, b) => b.totalReferredUser - a.totalReferredUser);

console.log(obj);
Hien Nguyen
  • 24,551
  • 7
  • 52
  • 62
-1

Try this:

const res  = { "status": true, "data": [ { "birthDate": "1984-03-04T00:00:00.000Z", "birthPlace": "Jakarta", "createdAt": "2019-01-11T01:55:18.254Z", "gender": "female", "id": "-LVubjI0TYQOoa3uE06L", "totalReferredUser": 6 }, { "birthDate": "1987-03-04T00:00:00.000Z", "birthPlace": "Jakarta", "createdAt": "2019-01-11T01:55:18.254Z", "gender": "female", "id": "-LVubjI0TYQOoa3uE06L", "totalReferredUser": 0 }, { "birthDate": "1982-03-04T00:00:00.000Z", "birthPlace": "Jakarta", "createdAt": "2019-01-11T01:55:18.254Z", "gender": "female", "id": "-LVubjI0TYQOoa3uE06L", "totalReferredUser": 0 }, { "birthDate": "1989-03-04T00:00:00.000Z", "birthPlace": "Jakarta", "createdAt": "2019-01-11T01:55:18.254Z", "gender": "female", "id": "-LVubjI0TYQOoa3uE06L", "totalReferredUser": 0 }, { "birthDate": "1984-03-04T00:00:00.000Z", "birthPlace": "Jakarta", "createdAt": "2019-01-11T01:55:18.254Z", "gender": "female", "id": "-LVubjI0TYQOoa3uE06L", "totalReferredUser": 2 }, { "birthDate": "1985-03-04T00:00:00.000Z", "birthPlace": "Jakarta", "createdAt": "2019-01-11T01:55:18.254Z", "gender": "female", "id": "-LVubjI0TYQOoa3uE06L", "totalReferredUser": 4 }, { "birthDate": "1983-03-04T00:00:00.000Z", "birthPlace": "Jakarta", "createdAt": "2019-01-11T01:55:18.254Z", "gender": "female", "id": "-LVubjI0TYQOoa3uE06L", "totalReferredUser": 1 }, { "birthDate": "1985-03-04T00:00:00.000Z", "birthPlace": "Jakarta", "createdAt": "2019-01-11T01:55:18.254Z", "gender": "female", "id": "-LVubjI0TYQOoa3uE06L", "totalReferredUser": 0 } ] }

const result =  res.data.sort((a,b) => b.totalReferredUser - a.totalReferredUser);

console.log(result)
Ghoul Ahmed
  • 4,446
  • 1
  • 14
  • 23