Javascript:查找数组中最中间的值

时间:2014-01-03 13:05:09

标签: javascript arrays

好的,我需要做的是返回数组中最中间的值。我应该使用Math.round来计算数组中的中间索引。为了清楚起见,我不是在谈论中位数,只是中间价值。

这就是我需要在文本中做的事情,因为我是javascript的新手但我不知道如何执行此操作。有什么想法吗?

另外,如果你认为这个问题不属于这里或者是愚蠢的,请指导我到我能找到这些信息的地方,我只是想在这里学习。

function test(arr) {


}

3 个答案:

答案 0 :(得分:30)

如果您有一个包含例如五个项目的数组,则中间项目位于索引2:

var arr = [ item, item, middle, item, item];

将长度除以2并使用Math.round会得到索引3而不是2,因此您需要先从长度中减去1:

var middle = arr[Math.round((arr.length - 1) / 2)];

您在问题中说您应该使用Math.round,但如果这不是必需的,您可以使用Math.floor更轻松地获得相同的结果:

var middle = arr[Math.floor(arr.length / 2)];

对于具有偶数项目的数组,这将为您提供中间两项中的第二项。如果您想要第一个,请使用Math.floor并从长度中减去一个。对于奇数项目,这仍然会得到相同的结果:

var middle = arr[Math.floor((arr.length - 1) / 2)];

答案 1 :(得分:9)

获取数组中间的索引:

var arr = [0, 0, 1, 0, 0];
var theMiddle = Math.floor(arr.length / 2); // index 2
var value = arr[theMiddle]; // value 1

一衬垫:

var value = arr[arr.length / 2 | 0];

答案 2 :(得分:2)

你也可以尝试这个:

function test(arr){      
  var middle_index = parseInt((arr.length/2).toFixed(), 10) - 1;
  if(middle_index === -1)
    alert('Array empty');
  else
    alert('Middle value in array ['+arr+'] is '+arr[middle_index]);
}

<强> DEMO Link