Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Tìm phần tử giữa (middle) của mảng trong JavaScript

Mô tả bài toán

Trả về phần tử giữa mảng. Nếu độ dài lẻ: 1 phần tử. Nếu chẵn: 2 phần tử giữa.

Ví dụ minh họa

const arr = [1, 2, 3, 4, 5, 6, 7];

const middle = function() {
  const half = this.length >> 1; // Math.floor(len/2)
  const offset = 1 - this.length % 2; // lẻ: 0, chẵn: 1
  return this.slice(half - offset, half + 1);
};

Array.prototype.middle = middle;
console.log(arr.middle());       // [4]
console.log([1,2,3,4,5,6].middle()); // [3,4]

Kết quả

[ 4 ] [ 3, 4 ]

Giải thích bitwise

  • length >> 1 tương đương Math.floor(length/2)
  • length % 2: lẻ=1, chẵn=0
  • offset = 1 - (len%2): lẻ→0, chẵn→1

Cách viết hàm thuần túy

const middle = arr => {
  const mid = arr.length >> 1;
  return arr.length % 2 ? [arr[mid]] : [arr[mid-1], arr[mid]];
};