好的,我需要做的是返回数组中最中间的值。我应该使用Math.round
来计算数组中间索引的位置。只是为了明确起见,我不是在谈论中位数,而只是中间的数值。
这就是我需要在文本中完成的任务,由于我对JavaScript还比较新,因此不太清楚如何执行。您有什么想法吗?
如果您认为这个问题不适合这里或者很愚蠢,请指导我到可以找到这些信息的地方,我只是想在这里学习。
function test(arr) {
}
好的,我需要做的是返回数组中最中间的值。我应该使用Math.round
来计算数组中间索引的位置。只是为了明确起见,我不是在谈论中位数,而只是中间的数值。
这就是我需要在文本中完成的任务,由于我对JavaScript还比较新,因此不太清楚如何执行。您有什么想法吗?
如果您认为这个问题不适合这里或者很愚蠢,请指导我到可以找到这些信息的地方,我只是想在这里学习。
function test(arr) {
}
如果你有一个包含五个元素的数组,那么中间的元素位于索引二:
var arr = [ item, item, middle, item, item];
将长度除以二并使用Math.round
会得到索引三而非两,因此您需要先从长度中减去一:
var middle = arr[Math.round((arr.length - 1) / 2)];
你在问题中提到你需要使用 Math.round
,但如果这不是必须的话,你可以更容易地使用 Math.floor
来获得相同的结果:
var middle = arr[Math.floor(arr.length / 2)];
对于元素数量为偶数的数组,这将给出位于中间的两个项中的第二个。如果你想要第一个,使用Math.floor
并从长度中减去1。这仍然对于元素数量为奇数的数组得到相同的结果:
var middle = arr[Math.floor((arr.length - 1) / 2)];
const arr = [0, 0, 1, 0, 0];
const theMiddle = Math.floor(arr.length / 2); // index 2
const value = arr[theMiddle]; // value 1
一行代码:
const value = arr[arr.length / 2 | 0];
floor()
函数。如果array.length
为1
,则Math.ceil(1/2)
也会是1
并且越界。 - Jonathan Lonowskifunction 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]);
}
[11,22,33,44]
,它应该返回什么? - georg