你最好如何[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
变成[12,12]
基本上每12个项目将一个数组简化为一个聚合。
这是我不太优雅的尝试:
let arr = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];
let result = 0;
let finalArr = [];
arr.forEach((item,index) => {
result += item;
if((index+1) % 12 === 0) {
finalArr.push(result)
result = 0
}
})
可以更优雅地做到这一点吗?也许使用reduce()
?我已经有一段时间没有使用js了,所以我有点生锈!提前致谢。
function reduceGroupByN(arr, count, fn) {
const out = []
if (count <= 1) throw new Error("Grouping must be greater than 1")
for (var last = 0; last < arr.length; last += count) {
out.push(arr.slice(last, last + count).reduce(fn))
}
return out
}
const arr = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
const result = reduceGroupByN(arr, 12, (a, b) => a + b)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句