JavaScript数组中的最小和最大索引

时间:2015-02-13 15:04:53

标签: javascript arrays

我有一个简单的问题。我有这样的JS数组:

data[-5]=[...];
data[-2]=[...];
data[-1]=[...];
data[4]=[...];
data[6]=[...];
data[7]=[...];

如何自动获取最小(数据[-5])和最大(数据[7])元素?

2 个答案:

答案 0 :(得分:5)

负索引不是实际索引。他们不会一直工作。它们就像对象的任何其他属性一样。

但是,您可以通过遍历可枚举属性(对于数组不好,但仍然如此)并向数组添加数字属性来执行您想要的操作。

var idxs = Object.keys(arr).filter(isFinite); // just take the Number properties
var min = Math.min.apply(Math, idxs),
    max = Math.max.apply(Math, idxs);

答案 1 :(得分:2)

没有循环的简短:

var keys = Object.keys(data);
var sorted = keys.sort(function(a, b){return a-b});
var min = data[sorted[0]];
var max = data[sorted[sorted.length-1]];