如何在字符串数组中提取中间值?无需使用if else语句
提取数组中间值的解决方案
嘿,这问题挺有意思的!不用Math.floor或者if else也能轻松搞定,而且方法还不止一种,甚至能适配任意奇数长度的数组哦~
方法一:用双波浪号~~取整
双波浪号在JavaScript里是一种快速取整的技巧,它会直接去掉数字的小数部分,对正数来说效果和Math.floor一致,但写法更简洁:
var someValues = ["abc", "def", "ghi" , "jkl", "mno"]; var middleValue = someValues[~~(someValues.length / 2)]; console.log(middleValue); // 输出 "ghi"
方法二:用Math.trunc()取整
如果觉得双波浪号不够直观,Math.trunc()是ES6新增的方法,专门用来去除小数部分保留整数,可读性更强:
var someValues = ["abc", "def", "ghi" , "jkl", "mno"]; var middleValue = someValues[Math.trunc(someValues.length / 2)]; console.log(middleValue); // 输出 "ghi"
方法三:用位运算>> 0取整
位运算也能实现取整效果,>> 0会把数值转换成32位整数,同样能去掉小数部分:
var someValues = ["abc", "def", "ghi" , "jkl", "mno"]; var middleValue = someValues[(someValues.length / 2) >> 0]; console.log(middleValue); // 输出 "ghi"
原理说明
你的数组长度是5,5 / 2得到2.5,上面的几种方法都会把这个小数转换成整数2,而数组索引从0开始,索引2对应的正好是中间元素"ghi"。如果是其他奇数长度的数组(比如长度7),用同样的方法也能精准定位到中间元素,完全不需要判断语句。
内容的提问来源于stack exchange,提问作者Deke
相关产品推荐
相关产品推荐

