-1

When I try to sort my object while in for loop, it is in descending order flow, but when I try to print my object in console after sorting, it is again showing in ascending order.

function sortObject(object) {
    var sortedObj = {},
        keys = _.keys(object);
    var keysReverse = keys.reverse();

    _.each(keysReverse, function(key) {

        sortedObj[key] = object[key];
        console.log(sortedObj);
    });
    return sortedObj;
}

var obj5 = {
    3: 'some',
    7: 'every',
    2: 'all'
}

sortObject(obj5);

How can I sort the object by key in descending order?

Emile Bergeron
  • 14,368
  • 4
  • 66
  • 111
reddy
  • 57
  • 2
  • 7

1 Answers1

0

Reverse array will not sort the array.

var keysReverse = _.sortBy(keys, function(num){ return num });

function sortObject(obj) {
  var sortedObj = {},
    keys = _.keys(obj);

  var keysReverse = _.sortBy(keys, function(num) {
    return num
  });

  _.each(keysReverse, function(key) {

    sortedObj[key] = obj[key];

  });
  return sortedObj;
}

var obj5 = {
  3: 'some',
  7: 'every',
  2: 'all'
}

console.log(sortObject(obj5));
<script src="
https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
Emile Bergeron
  • 14,368
  • 4
  • 66
  • 111
Mahi
  • 1,659
  • 8
  • 19
  • var keysReverse= _.sortBy(keys, function(num){ return -num; }); As i need descending order i used this method.. but still my object is logging in ascending order ?? like { "2": "all", "3": "some", "7": "every" } – reddy Dec 06 '16 at 07:13
  • 2
    @ArthiReddyPedditti Javascript objects' properties are unordered by definition; so sorting them is meaningless. – Mahi Dec 06 '16 at 09:11
  • you can sort array of keys of object. but not object itself . – Mahi Dec 06 '16 at 09:15
  • hi, can't we create a new object and add the properties in sorted key order ?? – reddy Dec 06 '16 at 10:21
  • that's what we are doing but at the end we are getting ascending order. – Mahi Dec 06 '16 at 11:52