[js] 写一个方法获取指定数组中间的值(一个或者两个)

haizhilin2013
2020-03-27 04:39:14 星期五
js
                    
                        
写一个方法获取指定数组中间的值(一个或者两个)
Comments per page
< Page 1 / 1 >
yyjiugui 2020-03-27 04:50:09
function getValue(arr) {
  if (!Array.isArray(arr)) {
    alert('请输入数组')
    return
  }
  const len = arr.length
  const even = len % 2 === 0

  if (even) {
    // 处理偶数
    const maxIndex = len / 2
    const minIndex = maxIndex - 1
    return [arr[minIndex], arr[maxIndex]]
  } else {
    // 处理奇数
    const odd = Math.floor(len / 2)
    return arr[odd]
  }
}
zackzergzeng 2020-03-27 12:26:45
Array.prototype.getArrayMiddle = function(){
  return this.length % 2 ? this[parseInt(this.length/2)] : [this[parseInt(this.length/2)-1], this[parseInt(this.length/2)]];
}
zwlhc 2020-03-28 06:09:07
function findMiddle (arr)  {
   const mid = parseInt(arr.length/2, 10)  
   return arr.length%2? [arr[mid]] : [arr[mid-1], arr[mid]]
}
Sunxinqiang 2020-03-31 09:57:29

实现

function getArrayMiddle (arr = []) {
    if (!Array.isArray(arr)) {
        return []
    }
    let len = arr.length
    // 长度小于3 直接返回 [] [1] [1,2]
    if (len < 3) {
        return arr.slice()
    }
    let isOdd = len % 2
    let index = len / 2
    // 奇数
    if (isOdd) {
        return [arr[Math.floor(index)]]
    } else {
        return [arr[index - 1], arr[index]]
    }
}

console.log(
 getArrayMiddle([]), // []
 getArrayMiddle([1]), // [1]
 getArrayMiddle([1,2]), // [1,2]
 getArrayMiddle([1,2,3,4,5]), // [3]
 getArrayMiddle([1,2,3,4,5,6,7,8,9,0]) // [5,6]
)
LicyWang 2020-05-07 01:59:36

function getMidElem(arr) {
let arrlen = arr.length;
if(arrlen%2==0){
console.log(arr[(arrlen/2)-1],arr[arrlen/2]);
}else {
console.log(arr[parseInt(arrlen/2)]);
}
}
getMidElem([0,1,2,3,4,5,6,7]);
getMidElem([0,1,2,3,4,5,6]);

zhiyual 2020-06-16 12:15:40
function getMidValue(arr) {
    let rsl = [];
    let l = arr.length;
    if (l % 2 == 0) {
        // 偶数
        rsl.push(arr[l/2-1], arr[l/2]);
    } else {
        // 奇数
        rsl.push(arr[(l-1)/2]);
    }
    return rsl;
}
yu1176887527 2020-07-02 07:59:39
if (Array.prototype.getMiddleArray !== 'function') {
    Array.prototype.getMiddleArray = function() {
        let middleStartIndex = Math.floor(this.length / 2),
            middleEndIndex = Math.ceil(this.length / 2);
        if (middleStartIndex === middleEndIndex) {
            middleStartIndex--;
            middleEndIndex++;
        }
        return this.slice(middleStartIndex, middleEndIndex);
    }
}

[1,2,3].getMiddleArray()  // [2]
[1,2,3,4].getMiddleArray()  // [2,3]
mxm646690173 2020-07-14 06:56:54
getCenterNum(array);
  function getCenterNum(arr) {
    //整除,即为中间数为2个,否则为1个
    if (arr.length % 2 == 0) {
      console.log(arr[arr.length / 2 -1] + "," + arr[arr.length / 2]);
    } else {
      console.log(arr[Math.floor(arr.length / 2)]);
    }
  }
Comments per page
< Page 1 / 1 >
排行榜
今日答题答题排行
    未答的题
    更多>
      【关注作者公众号】 以面试驱动学习--前端剑解
      【公众号推荐】 不折腾的前端和咸鱼有什么区别

      学习不打烊,充电加油只为遇到更好的自己,365天无节假日,每天早上5点纯手工发布前端知识点(死磕自己,愉悦大家)。希望大家在这浮夸的前端圈里,保持冷静,坚持每天花20分钟来学习与思考。在这千变万化,类库层出不穷的前端,建议大家不要等到找工作时,才狂刷题,提倡每日学习!欢迎大家关注3+1开源项目!希望大家每人去学习与思考!(不要为了谁而来,要为自己而努力!

      【关注官方公众号】 每天4:30-5:00推送
      【公众号推荐】 一起折腾前端算法
      【微信学习群】 备注3+1