js平分一个数组到两个新数组

Fly 2024-01-05 11:33:40 351浏览 118字数

js把一个数组,分成两个变量,如果数组最大长度小于等于2就只分给一个变量,另一个为空数组



function splitArray(arr) {
  if (arr.length <= 2) {
    const [first = [], second = []] = [arr, []];
    return [first, second];
  } else {
    const mid = Math.ceil(arr.length / 2);
    const [first, second] = [arr.slice(0, mid), arr.slice(mid)];
    if (first.length - second.length > 1) {
      const newMid = mid + 1;
      return [arr.slice(0, newMid), arr.slice(newMid)];
    } else {
      return [first, second];
    }
  }
}

// 测试
const array1 = [1, 2, 3, 4, 5];
const [result1, result2] = splitArray(array1);
console.log(result1); // 输出:[1, 2, 3]
console.log(result2); // 输出:[4, 5]

const array2 = [1, 2];
const [result3, result4] = splitArray(array2);
console.log(result3); // 输出:[1]
console.log(result4); // 输出:[2]

const array3 = [1];
const [result5, result6] = splitArray(array3);
console.log(result5); // 输出:[1]
console.log(result6); // 输出:[]


我们使用了Math.ceil来获取数组的中间位置,然后根据中间位置将数组分成两部分。如果分割后的两个数组的长度相差超过1,我们会调整分割位置,确保它们的长度相差不超过1。


通过这个修改后的函数,您可以确保分割后的两个数组的长度相差不超过1。

最后修改:2024-01-05 11:33:40

非特殊说明,本博所有文章均为博主原创。