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 >> 1tương đươngMath.floor(length/2)length % 2: lẻ=1, chẵn=0offset = 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]];
};