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

标签 javascript arrays sorting associative-array

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 排序前包含 555 : MAMA + 556 : TOTO ...

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

我希望我有相同的排序,但格式为 : 555 : TOTO + 556 : MAMA

最佳答案

您不能将数组用作映射,也不能订购对象。

但是从 ECMAScript 2015 开始,您可以使用 Map 对象来保证键的顺序。 See the Map documentation

这是一个在输入中包含对象的快速示例:

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;
});

关于javascript - 如何通过Javascript中的排序函数对具有相同ID的关联数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36989454/

相关文章:

javascript - javascript中函数与函数的关系

javascript - 使用 Bootstrap Switch 和 Ruby on Rails 查找复选框的状态

javascript - 补间JS导致WebGL上下文丢失

c++ - 为什么 const char[] 的类型推导与 const char * 不同?

c# - 不使用闰年函数计算闰年

algorithm - 为什么快速排序排除中间元素而归并排序包含它?

javascript - 动态替换两个连字符 ("--") 为长破折号 ("—") ?

javascript - 如何从 Javascript 数组中删除带有空字符串的对象?

c++ - 为什么 "quick sorting"算法的这两个变体在性能上差异如此之大?

c++ - C++ 中的多键自定义排序