Dav*_*den 12 javascript sorting jquery key-value
在javascript中,是否有一种通过值对键值对进行排序的简单方法(假设值为数字),并返回键?使用jQuery方法也很有用.
(这里有很多关于键值对的相关问题,但我找不到一个专门关于排序的问题.)
Tim*_*own 21
这种跨浏览器并不容易.假设一个数组如
var a = [
{key: "foo", value: 10},
{key: "bar", value: 1},
{key: "baz", value: 5}
];
Run Code Online (Sandbox Code Playgroud)
...您可以key按value如下方式获取按以下顺序排列的属性数组:
var sorted = a.slice(0).sort(function(a, b) {
return a.value - b.value;
});
var keys = [];
for (var i = 0, len = sorted.length; i < len; ++i) {
keys[i] = sorted[i].key;
}
// keys is ["bar", "baz", "foo"];
Run Code Online (Sandbox Code Playgroud)
假设我们有一个Array的Objects,如:
var data = [
{foo: 6},
{foo: 2},
{foo: 13},
{foo: 8}
];
Run Code Online (Sandbox Code Playgroud)
我们可以调用Array.prototype.sort()帮助,使用Array.prototype.map()帮助来映射新数组并Object.keys()帮助获取密钥:
var keys = data.sort(function(a,b) {
return a.foo - b.foo;
}).map(function(elem, index, arr) {
return Object.keys(elem)[0];
});
Run Code Online (Sandbox Code Playgroud)
请注意,Array.prototype.map()需要Javascript 1.6并且Object.keys()是ECMAscript5(需要Javascript 1.8.5).
您将在MDC上找到所有这些方法的替代代码.