如何获取数组值,其中键是数字,是下一个最低值?

时间:2014-12-31 00:45:37

标签: javascript arrays

如果我在javascript中有这个数组:

array[1] = 'blue';
array[25] = 'green';
array[50] = 'yellow';
array[75] = 'orange';
array[100] = 'red';

我有:

number = 35

我该怎么做:

output = 'green';

4 个答案:

答案 0 :(得分:5)

如果您的阵列设置如此,包括所有空插槽,您可以执行以下操作。

var i = 35;

while ( ! array[--i]) {}

array[i]; // "green"

jsFiddle

但是,如果您尝试显示这些数字与颜色之间的关系,则应使用对象。

答案 1 :(得分:1)

使用hasOwnProperty()方法检查index是否真的是array的属性。(对于两个数组以及array-like个对象)它是{{ 1}}仅当在该特定索引处分配了值时。 true下方的第一个有效索引将包含35

green

答案 2 :(得分:0)

var firstLessThanX = function (x) {
  var array = [100, 75, 50, 25, 1];
  for (var i = 0; i < array.length; i += 1) {
    if (array[i] < x) {
      return array[i];
    }
  }
  return 'All values greater than or equal to ' + x;
};

array[ firstLessThanX(35) ] // 'green'

答案 3 :(得分:0)

您可以遍历数组中的项目,并检查哪个项目小于该数字,最接近该数字:

&#13;
&#13;
var array = [];

array[1] = 'blue';
array[25] = 'green';
array[50] = 'yellow';
array[75] = 'orange';
array[100] = 'red';

var n = 35, min = null, value;

for (x in array) {
  var diff = n - x;
  if (diff >= 0 && (min == null || diff < min)) {
    min = diff;
    value = array[x];
  }
}

// show result is Stackoverflow snippet
document.write(value);
&#13;
&#13;
&#13;