-1

I have an object named languages :

 ► JAVA : Array[1]
 ► C : Array[2]
 ► C#: Array[4]
 ► C++: Array[1]

I would like to sort this object by length (Desc) of each array :

► C#:Array[4]
► C:Array[2]
► JAVA:Array[1]
► C++:Array[1]

I have tried according to this

    function myAbcSort(a,b){
        if(a.length>b.length){
            return -1;
        }
        else if (a.length<b.length){
            return 1;
        }
        else return 0
    }
    languages.sort(myAbcSort);

I'm getting :

languages.sort is not a function
Community
  • 1
  • 1
John
  • 185
  • 1
  • 6
  • 21

1 Answers1

5

Object can not be sorted. You can create an array with key/values:

Object.keys(languages)
  .map(function(k) { return { key: k, value: languages[k] }; })
  .sort(function(a, b) { return b.value.length - a.value.length; });
oryol
  • 5,178
  • 2
  • 23
  • 18