Fei Blog

js-map-sort

2018/04/08
阅读量:

经常会用到ES6的Map排序,总结一下

ES6 Map functions

  • Map.has(KEY): 判断是否含有KEY
  • Map.get(KEY): 获取指定KEY的VALUE值
  • Map.keys(): 返回一个新的 Iterator对象
  • Map.values(): 返回一个新的 Iterator对象
  • Map.set(KEY, VALUE): 设置KEY和VALUE
  • Map.entries(): 返回一个新的 Iterator 对象,它按插入顺序包含了Map对象中每个元素的 [key, value] 数组。
  • Map.clear(): 移除Map对象的所有键/值对 。
  • Map.delete(KEY): 移除任何与键相关联的值,并且返回该值,该值在之前会被Map.prototype.has(key)返回为true。之后再调用Map.prototype.has(key)会返回false。

js map sort by key

  • 主要思想:将KEYS排序,然后把每个KEY对应的VALUE拿到即可。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function sortMapByKey(map) {
    var keys = map.keys();
    var keysArr = [];
    for(var key of keys){
    keysArr.push(key);
    }
    keysArr.sort(function(a,b) {return a-b;});
    var res = new Map();
    for(var i=0;i<keysArr.length;i++) {
    res.set(keysArr[i], map.get(keysArr[i]));
    }
    return res;
    }

js map sort by value

  • 比按照key进行排序稍微复杂一些
  • 主要思想是: 两个数组分别存储key和value,然后对value进行排序,在交换的时候把key的对应元素也进行交换。
    之后把排序后的key和value的数组直接匹配即可。
    sortMapByValue(map) {
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    var swap = function(arr,i,j){
    var tmp = arr[i];
    arr[i] = arr[j];
    arr[j] = tmp;
    };
    var keys = map.keys();
    var values = map.values();
    var keysArr = [], valuesArr = [];
    for(var key of keys) {
    keysArr.push(key);
    }
    for(var value of values) {
    valuesArr.push(value);
    }
    var len = keysArr.length;
    for(var i=0;i<len;i++){
    for(var j=len-1;j>i;j--) {
    if(valuesArr[j-1]<valuesArr[j]) {
    swap(valuesArr, j,j-1);
    swap(keysArr, j,j-1);
    }
    }
    }
    var res = new Map();
    for(var i=0;i<len;i++) {
    res.set(keysArr[i], valuesArr[i]);
    }
    return res;
    }

References

CATALOG
  1. 1. 经常会用到ES6的Map排序,总结一下
    1. 1.1. ES6 Map functions
    2. 1.2. js map sort by key
    3. 1.3. js map sort by value
    4. 1.4. References