繁体   English   中英

如何通过Javascript中具有相同ID的排序函数对关联数组进行排序?

[英]How to sort an associative array by sort function in Javascript with the same ID?

function updateUld(pUldValues){
    if (pUldValues != null){
        pUldValues.sort(compareSort);
    }
}

function compareSort (first,second){
    var ret = 0;
    var uldA = first[1]; //TOTO
    var UldB = second[1]; //MAMA
      if (uldA.substring(0,1) == "T"){
            ret = compareRefUldRefUldTULD(uldA, UldB);
        }
        if (uldA.substring(0,1) == "M" ||
                uldA.substring(0,1) == "A"){
            ret = compareRefUldRefUldMix(uldA, UldB);
        }
        if (uldA.substring(0,1) == "L"){
            ret = compareRefUldRefUldLoose(uldA, UldB);
        }
        if(ret==0){
            if (UldB.substring(0,1) == "M" ||
                    UldB.substring(0,1) == "A"||
                    UldB.substring(0,1) == "T" ||
                    UldB.substring(0,1) == "L"){
                ret = -1 ; 
            }else{
                ret= UldB.localeCompare(uldA);
            }
        }
        return -ret ;
}

pUldValues前的pUldValues包含555 : MAMA + 556 : TOTO ...

排序后是: 0 : TOTO + 1 : MAMA ...

我希望我有相同的排序,但采用这种格式: 555 : TOTO + 556 : MAMA

您不能将 Array 用作 Map,也不能订购 Object。

但是从 ECMAScript 2015 开始,您可以使用Map对象来保证键的顺序。 查看地图文档

这是一个输入对象的快速示例:

 var myMap = { "555": "TOTO", "556": "MAMA", "557": "PAPA", "1": "ZOE", "2": "ABC" }; function sortMap(map){ // Get the keys of map var keys= Object.keys(map); // Sort the keys by the value keys.sort(function(a,b){ var aValue = map[a]; var bValue = map[b]; if(aValue < bValue) return -1; if(aValue > bValue) return 1; return 0; }); // Rebuild the map from the sorted key. var result = new Map; for(var i = 0; i < keys.length; i++){ result.set(keys[i], map[keys[i]]); } return result; } var sortedMap = sortMap(myMap); // Snipet display sortedMap.forEach(function(value, key){ document.body.appendChild(document.createElement('div')).innerHTML = key+'=>'+value; });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM