Open shfshanyue opened 3 years ago
function chunk (list, size) {
const l = []
for (let i = 0; i < list.length; i++ ) {
const index = Math.floor(i / size)
l[index] ??= [];
l[index].push(list[i])
}
return l
}
或者直接构造出每一个 chunk
function chunk(list, size) {
const l = []
for (let i = 0; i < list.length; i += size) {
const chunk = list.slice(i, i + size)
l.push(chunk)
}
return l
}
function chunk(array, limit) {
limit = array.length <= limit ? array.length : limit;
const result = [];
while(array.length) {
result.push(array.splice(0, limit));
}
return result;
}
@haotie1990 这种实现方式很漂亮,但是有可能有副作用,当传入数组时,数组会被置空,可以先 [...array]
浅拷贝一份
function chunk(list = [], size) {
return list.reduce((pre, cur) => {
const length = pre.length;
if (length === 0 || pre[length - 1].length === size)
return pre.concat([[cur]]);
else {
pre[length - 1].push(cur);
return pre;
}
}, []);
}
示例如下: