如何获取对象中的所有数字键(并找到更低和更高的键)

时间:2016-05-26 07:51:29

标签: javascript object

我有一个带有混合键名称的对象 - 字符串和数字:

var obj = {
  foo: 'foo val',
  bar1: 'bar1 val',
  1: 'one',
  2: 'two',
  99: 'ninety nine',
  1024: 'one thousand and twenty four'
};

我想知道关于这个对象的一些事情:

  1. 获取所有数字键的列表(如何下载bar1foo;
  2. 知道编号较低的密钥(可能是10-1等等;
  3. 知道编号较高的密钥(可以是任何编号)

2 个答案:

答案 0 :(得分:2)

您可以使用Object.keys作为密钥,并使用Array#filterisFinite对其进行过滤,并应用Math.minMath.max



var obj = {
        foo: 'foo val',
        bar1: 'bar1 val',
        1: 'one',
        2: 'two',
        99: 'ninety nine',
        1024: 'one thousand and twenty four'
    },
    keys = Object.keys(obj),
    numbered = keys.filter(isFinite),
    min = Math.min.apply(null, numbered),
    max = Math.max.apply(null, numbered);

console.log(keys);
console.log(numbered);
console.log(min);
console.log(max);




答案 1 :(得分:1)

试试这个:

var obj = {
    foo: 'foo val',
    bar1: 'bar1 val',
    1: 'one',
    2: 'two',
    99: 'ninety nine',
    1024: 'one thousand and twenty four'
};

console.log(get_numbered_keys(obj))

function get_numbered_keys(obj) {
    return Object.keys(obj)
        .filter(function(key) {
            return !isNaN(key)
        })
        .map(function(key) {
            return parseInt(key)
        })
        .sort(function(a, b) {
            return a - b;
    })
}

也为你做了一个小提琴:https://jsfiddle.net/2d1bc5tm/

对结果列表进行了方便的排序,以便您可以获得最低和最高的列表:

var sorted_int_list = get_numbered_keys(obj)

var min = sorted_int_list[0] // gets the first element in array
var max = sorted_int_list.slice(-1)[0] // gets the last element in array