【发布时间】:2019-05-18 12:03:36
【问题描述】:
我正在尝试按字母顺序“自然排序顺序”中的瑞典字符键对数组进行排序。这是测试数组:
var test = [];
test["abc"] = [];
test["ABC"] = [];
test["test"] = [];
test["Test"] = [];
test["åäö"] = [];
test["ÅÄÖ"] = [];
所需的结果是数组的创建顺序(abc、ABC、test、Test、åäö、ÅÄÖ),但我不知道如何获得该顺序。
我尝试过使用:
var sortedKeys = Object.keys(test).sort();
还有:
var sortedKeys= Object.keys(test).sort(function (a, b) {
return a.toLowerCase().localeCompare(b.toLowerCase());
});
但我无法获得所需的键顺序。这是一个带有一些测试的jsfiddle: https://jsfiddle.net/3cs491gq/
感谢您帮助整理(!)这个。
【问题讨论】:
-
为什么要将字符串键添加到数组中?看起来您需要一个关联数组(即类似字典的行为)。因此
Object是这里的正确选择。这样做的原因是数组是一个对象。您在这里没有使用任何类似数组的东西。 IMOtest应该是var test = {}; -
您正在创建一个对象,因此无法保证键顺序。使用数组,保证元素顺序。
-
@spender 真正的代码比这复杂一点,我试着在这里做一个简单的例子。
-
如果没有定义'一种“自然”的方式',你就会在黑暗中得到答案。
-
抱歉不清楚,但我想的是“自然排序”,比如:en.wikipedia.org/wiki/Natural_sort_order ...我已经稍微更新了这个问题。
标签: javascript arrays string object