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。