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

Javascript:在数组中查找最中间的值,javascript,arrays,Javascript,Arrays,好的,我需要做的是返回数组中最中间的值。我应该使用Math.round来计算数组中的中间索引。我要澄清的是,我说的不是中位数,而是中间值 这就是我在文本中需要做的,因为我是javascript新手,但我不知道如何执行它。有什么想法吗 另外,如果你认为,这个问题不属于这里或者是愚蠢的,请告诉我在哪里可以找到这些信息,我只是想在这里学习 function test(arr) { } 获取数组中间的索引: var arr = [0, 0, 1, 0, 0]; var theMiddle = Ma

好的,我需要做的是返回数组中最中间的值。我应该使用
Math.round
来计算数组中的中间索引。我要澄清的是,我说的不是中位数,而是中间值

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

另外,如果你认为,这个问题不属于这里或者是愚蠢的,请告诉我在哪里可以找到这些信息,我只是想在这里学习

function test(arr) {


}

获取数组中间的索引:

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];

你也可以试试这个:

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]);
}

如果您有一个包含五个项目的数组,则中间的项目位于索引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)];

给定
[11,22,33,44]
,它应该返回什么?数字的数量是不均匀的,所以总是有一个中间的one@AndrewP你应该在问题中包含数字数量总是不均匀的信息,这会对答案产生很大影响。可能需要
floor()
。如果
array.length
1
Math.ceil(1/2)
也是
1
并且超出范围。那么如果数组是5,3,8,那么中间值应该是3?因为这就是我想要的是的。它是基于索引,而不是值。投票给一行。这看起来确实是一条路,但出于某种原因,我无法让它工作。我是否正确地将注释中的第二个代码字符串从我的原始帖子中放入{},然后返回中间;之后呢?这会返回中间值吗?@AndrewP:是的,这就是如何使用它。以下是一个工作示例: