How to sort map's values?

后端 未结 4 1108
心在旅途
心在旅途 2021-01-06 11:45

Can someone give me a hint? I want to sort a map\'s values by the length of the lists.

var chordtypes = {
  \"maj\": [0, 4, 7],
  \"M7\": [0, 4, 7, 11],
  \"         


        
4条回答
  •  感动是毒
    2021-01-06 12:08

    Something like this could work for you:

    Map chordtypes = {
      "maj": [0, 4, 7],
      "M7": [0, 4, 7, 11],
      "m7": [0, 3, 7, 10],
      "6": [0, 4, 7, 9],
      "9": [0, 4, 7, 10, 14],
      "sus2": [0, 2, 7],
      "sus4": [0, 5, 7],
      "omit3": [0, 7],
      "#5": [0, 4, 8],
      "+7b9#11": [0, 4, 8, 10, 13, 18],
      "+9": [0, 4, 8, 10, 14]
    };
    
    List keys = chordtypes.keys.toList();
    keys.sort((k1, k2) {
      if(chordtypes[k1].length > chordtypes[k2].length)
        return -1;
      if(chordtypes[k1].length < chordtypes[k2].length)
        return 1;
      return 0;
    });
    keys.forEach((String k) {
      print('$k ${chordtypes[k]}');
    });
    

提交回复
热议问题