按数组长度排序对象键值

时间:2017-03-27 15:09:01

标签: javascript arrays sorting lodash

我有一个名为languages的对象:

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

我想按每个数组的长度(Desc)对此对象进行排序:

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

我已根据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);

我得到了:

languages.sort is not a function

1 个答案:

答案 0 :(得分:2)

无法对对象进行排序。您可以使用键/值创建数组:

Object.keys(languages)
  .map(function(k) { return { key: k, value: languages[k] }; })
  .sort(function(a, b) { return b.value.length - a.value.length; });