@Amberlamps 不错的解决方案大部分时间都有效。但是,OP 是正确的,某些键存在拆分问题。javascript 中 sort() 的默认行为是使用字符串 Unicode 代码点来确定元素的顺序。例如,使用 @Amberlamps 方法无法正确排序以下键:
canvas_2_1/15/2018__2:55:20_PM
canvas_24_1/15/2018__2:55:20_PM
但是我们可以利用 sort() 接受一个可选参数的事实来自定义排序方法,该参数是一个比较数组的 2 个元素的函数。
通过自定义比较函数的排序逻辑并将其传递给 sort() 方法,上面的键得到正确排序:
sorted.sort(function(a, b) {
a = parseInt(get_between(a, 'canvas_', '_'));
b = parseInt(get_between(b, 'canvas_', '_'));
if (a > b) {
return 1;
}
if (b > a) {
return -1;
}
return 0;
});
在这种情况下,我使用以下 get_between 方法:
function get_between(str, char_a, char_b) {
res = str.split(char_a).pop().split(char_b).shift();
return(res)
}
要点是,如果您有棘手的键(可能是也可能不是“正确”使用 dict),您可以调整排序功能以仍然正确排序。