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

Cách thực hiện Butterfly Shuffle trong JavaScript

Mảng butterfly shuffle: số giảm dần đến giữa mảng rồi tăng dần đến cuối. Số lớn nhất ở đầu. Biến thể: số tăng đến giữa rồi giảm, số nhỏ nhất ở đầu.

Viết hàm nhận mảng số và chuỗi 'asc'/'des': 'des' => tăng đến giữa rồi giảm; 'asc' => giảm đến giữa rồi tăng.

Cách tiếp cận

  • Sắp xếp mảng: 'asc' thì sort tăng, 'des' thì sort giảm.
  • Chia mảng thành 2: phần tử chẵn push vào first, lẻ unshift vào second (hoặc ngược lại tùy độ dài chẵn/lẻ) để tự động đảo ngược một nửa.
  • Nối hai mảng theo quy tắc.

Ví dụ

const array = [8,2,6,3,9,1,4,5,0,7];

const butterflyShuffle = (array, order = 'asc') => {
  const arr = array.slice();
  arr.sort((a, b) => order === 'asc' ? a - b : b - a);
  const first = [], second = [];
  const isEven = arr.length % 2 === 0;
  for (let i = 0; i < arr.length; i++) {
    if (i % 2 === 0) {
      isEven ? first.push(arr[i]) : first.unshift(arr[i]);
      continue;
    }
    isEven ? second.unshift(arr[i]) : second.push(arr[i]);
  }
  return isEven ? second.concat(first) : first.concat(second);
};

console.log(butterflyShuffle(array));
console.log(butterflyShuffle(array, 'des'));

Kết quả

Đầu ra trong console sẽ là:

[
  9, 7, 5, 3, 1,
  0, 2, 4, 6, 8
]
[
  0, 2, 4, 6, 8,
  9, 7, 5, 3, 1
]