我想按数值对数组进行排序,然后获取第一个值的键。
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]给了我第一个对象,但是我如何获得第一个对象的键?
答案 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
,并且将对象推送到具有两个属性k
和v
的数组上。要访问这些属性,您可以使用点符号,如下所示:
var k = temp[index].k;
var v = temp[index].v;