排序数组并获取jquery中的第一个键

时间:2013-12-19 21:27:12

标签: jquery arrays sorting

我想按数值对数组进行排序,然后获取第一个值的键。

var obj = { name1:2, name2:3, name3:1 };


var temp = [ ];
$.each(obj, function(key, value) {
temp.push({k: key , v:value});
});
temp.sort(function(a,b){
if(a.v > b.v){ return 1}
if(a.v < b.v){ return -1}
  return 0;
});

console.log(temp[1]);

temp [1]给了我第一个对象,但是我如何获得第一个对象的键?

4 个答案:

答案 0 :(得分:2)

temp[0].k将保留您创建的k密钥

答案 1 :(得分:2)

要从对象获取密钥,您可以使用keys()。例如:

var obj = { name1:2, name2:3, name3:1 }; 
var obj_keys = obj.keys();

这将返回["name1", "name2", "name3"]

由于您将密钥存储在k中,因此可能与以下内容一样简单:

temp[0].k // First item is index 0.

答案 2 :(得分:1)

您可能会发现这种排序数组更加通用;您可以在调用函数时按名称检索密钥,然后将其存储在不同的数组中并调用第一个值。

function sortByKey(array, key) {
    return array.sort(function(a, b) {
        var x = a[key]; var y = b[key];
        return ((x < y) ? -1 : ((x > y) ? 1 : 0));
    });
}

var people = [
    {name: 'bob'},
    {name: 'joe'},
    {name: 'amy'}
];

people = sortByKey(names, 'name');
alert(people[0].name);

答案 3 :(得分:1)

how do i get the key of the first object?

您有一个数组temp,并且对象推送到具有两个属性kv的数组上。要访问这些属性,您可以使用点符号,如下所示:

var k = temp[index].k;
var v = temp[index].v;