【问题标题】:sort array and get first key in jquery排序数组并在jquery中获取第一个键
【发布时间】:2013-12-19 21:27:12
【问题描述】:

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

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] 给了我第一个对象,但我如何获得第一个对象的键?

【问题讨论】:

  • 你试过了吗:temp[1].k

标签: jquery arrays sorting


【解决方案1】:

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

【讨论】:

    【解决方案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.
    

    【讨论】:

    • 请注意,这适用于支持obj.keys (ie9+) 的浏览器
    • @NickTomlin 啊,是的,这是一个重要的警告。
    【解决方案3】:

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

    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);
    

    【讨论】:

    • 这很棒;我刚刚添加了第二个值,以使其工作。 var people = [ {name: 'bob', myitem: 1 }, {name: 'joe', myitem: 3 }, {name: 'amy', myitem: 2 } ];
    • 啊,是的——我已经保存了这个功能多年,它真的很方便;)
    【解决方案4】:

    how do i get the key of the first object?

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

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

    【讨论】:

      猜你喜欢
      • 2019-01-27
      • 2021-10-22
      • 2021-03-07
      • 2013-04-23
      • 2020-05-15
      • 2018-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多