Javascript 如何选择数组的中间位置?

Javascript 如何选择数组的中间位置?,javascript,arrays,Javascript,Arrays,我想我可以用 $ [1,2,3,4,5].splice((this.length / 2), 1)[0] 但它给了我 $ 1 [ 1, 2, 3, 4, 5 ] 我试过了 $ [1,2,3,4,5].splice(function() { return this[this.length / 2, 1]}) 但它给了我 $ 1 [ 1, 2, 3, 4, 5 ] 我正在寻找一个解决方案,它给我一个整数,对于偶数数组,它是两者中较低的一个,例如 [1,2,3,4] givees 2

我想我可以用

$ [1,2,3,4,5].splice((this.length / 2), 1)[0]
但它给了我

$ 1 
[ 1, 2, 3, 4, 5 ]
我试过了

$ [1,2,3,4,5].splice(function() { return this[this.length / 2, 1]})
但它给了我

$ 1 
[ 1, 2, 3, 4, 5 ]
我正在寻找一个解决方案,它给我一个整数,对于偶数数组,它是两者中较低的一个,例如

[1,2,3,4] givees 2
[1,2,3,4,5] gives 3
[1,2,3,4,5,6] gives 3
[1,2,3,4,5,6,7] gives 4

您不能将此用作参数,因为它应该在函数内部调用,而splice接受作为参数整数。如果你真的想使用
这个
,你可以使用原型。使用函数,因为数组索引只接受整数,
Math.floor
向上舍入到最低整数(例如:
Math.floor(2.5)==2

Array.prototype.getMiddle=函数(){
返回此[Math.floor(this.length/2)]
}

console.log([1,2,3,4,5].getMiddle())//3
问题在于
引用。试试这个:

console.log(getMiddle([1,2,3,4]);
log(getMiddle([1,2,3,4,5]);
log(getMiddle([1,2,3,4,5,6]);
log(getMiddle([1,2,3,4,5,6,7]);
函数getMiddle(arr){
返回阵列拼接(数学地板((阵列长度-1)/2),1)[0]

}
你应该使用类似的东西

var data, remaining, hold, result;
data = ["1","2","3","4","5","6","7","8", "9"];
remaining = data.length % 2;
hold = Math.floor(data.length / 2);
result = data[(remaining + hold - 1)];
document.write(result);

或者,如果您想要中间的两个,您可以使用一个var执行mid+2,该var测试长度是否相等。

您可以创建一个原型来获取中间元素

Array.prototype.middle=函数(){
常数
一半=此长度>>1,
偏移量=1-此长度为%2;
返回此.slice(半偏移,半+1);
};
console.log([1,2,3,4,5].middle());//[3]
console.log([1,2,3,4,5,6].middle());//[3, 4]
console.log([1,2,3,4].middle());//[2,3]

。作为控制台包装{最大高度:100%!重要;顶部:0;}
请添加所需结果
拼接
不接受函数<代码>拼接变异数组并返回包含已删除元素的数组。看见代码块开头的
$
是什么?您希望输出的确切内容是什么?阵列?你能澄清你的问题吗?我以为你想要中间的元素?如果数组有偶数个元素怎么办?这能回答你的问题吗@user4642212好的,好的,结果是一样的,但你是对的,parseInt用于将字符串转换为整数,但它们也对数字进行取整。@user4642212问题是
如何选择数组的中间?
。我读错了什么?我应该是解释学方面的专家吗?@user4642212不管怎样,我现在给你四种不同的计算方法,解释为什么不能将
这个
与拼接一起使用,因为拼接只接受整数作为参数,甚至提供了一个可以使用
这个
的原型。我希望现在就足够了,但你当然应该检查一下;如果(剩余==0)document.write(“此数组长度为两倍”);或者如果你想要中间的两个,你可以使用一个var来测试长度是否相等。我会完全删除第一个建议-将一个元素数组从一个索引拼接到同一个索引加上一,然后得到结果中的第一个值,创建一个冗余数组,第二个更整洁。@jonrsharpe是的,第二个更整洁,但第一个只是为了解决所用方法中的OP问题。我补充了一些解释。谢谢你的评论。