我有一个带有混合键名称的对象 - 字符串和数字:
var obj = {
foo: 'foo val',
bar1: 'bar1 val',
1: 'one',
2: 'two',
99: 'ninety nine',
1024: 'one thousand and twenty four'
};
我想知道关于这个对象的一些事情:
bar1
和foo
; 1
,0
或-1
等等; 答案 0 :(得分:2)
您可以使用Object.keys
作为密钥,并使用Array#filter
和isFinite
对其进行过滤,并应用Math.min
和Math.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