好的,我需要做的是返回数组中最中间的值。我应该使用Math.round
来计算数组中的中间索引。为了清楚起见,我不是在谈论中位数,只是中间价值。
这就是我需要在文本中做的事情,因为我是javascript的新手但我不知道如何执行此操作。有什么想法吗?
另外,如果你认为这个问题不属于这里或者是愚蠢的,请指导我到我能找到这些信息的地方,我只是想在这里学习。
function test(arr) {
}
答案 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 强>