【发布时间】:2023-03-09 10:00:01
【问题描述】:
我正在寻找将数组转换为子数组的数组。
一个例子是:
let arr = [1, 2, 3, 4, 5, 6, 7, 8]
arr = [[1, 2], [3, 4], [5, 6], [7, 8]]
现在如果这个数组的长度不能被 2 整除
let arr = [1, 2, 3, 4, 5, 6, 7]
arr = [[1, 2], [3, 4], [5, 6], [7]]
我对这个问题的解决方案,IMO 不是很干净
const isPrime = num => {
for (let i = 2; i < num; i++)
if (num % i === 0) return false;
return num > 1;
}
const howToGroupArray = (array) => {
if (array.length === 1) {
return [1, 0] // group of 1 remainder 0
}
else if (!isPrime(array.length) || array.length === 2) {
return [2, 0] // groups of 2 remainder 0
}
else {
return [2, 1] // groups of 2 and a group of 1
}
}
let values = [1,2,3,4,5,6,7]
let newArray = []
let groups = values.forEach((x, i) => {
if ((i === 0 || i % 2 === 0) && (i !== (values.length - 1))) {
newArray.push([x, values[i + 1]])
}
else if ((i % 2 === 1) && (i !== (values.length - 1))) {
null
}
else {
howToGroupArray(values)[1] === 0 ? null : newArray.push([x])
}
})
【问题讨论】:
标签: javascript performance refactoring code-readability