3 回答

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個(gè)贊
但是否有一些現(xiàn)成的功能呢?
不幸的是沒(méi)有。其他語(yǔ)言(例如 Kotlin),確實(shí)有chunk方法。
然而,這可以通過(guò) 來(lái)實(shí)現(xiàn).flatMap,但是“舊循環(huán)”在這里工作得更好:
const result = [], size = 3;
for(const { nodes } of myArray) {
for(let i = 0; i < nodes.length; i += size)
result.push({ nodes: nodes.slice(i, i + size) });
}

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超3個(gè)贊
使用Array.flatMap()我們迭代原始數(shù)組,使用chunks方法(基于Array.from())將nodes數(shù)組拆分為多個(gè)數(shù)組,然后將它們映射,并將每個(gè)數(shù)組包裝在一個(gè)對(duì)象中。flatMap 將結(jié)果轉(zhuǎn)換回單個(gè)數(shù)組。
const myArray = [
{nodes: Array(5)},
{nodes: Array(3)},
{nodes: Array(3)}
]
const chunks = chunkSize => arr => Array.from({ length: Math.ceil(arr.length / chunkSize) }, (_, i) =>
arr.slice(i * chunkSize, (i + 1) * chunkSize)
)
const chunks3 = chunks(3)
const result = myArray.flatMap(o => chunks3(o.nodes).map(nodes => ({ nodes })))
console.log(result)

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個(gè)贊
map,filter并且find回調(diào)只返回一個(gè)布爾值,而方法本身決定如何在最后返回。使用reduce,您的回調(diào)可以返回任何內(nèi)容,而這正是 的返回值reduce。所以:
console.log(['foo', 'bar', 'baz'].reduce((a, i) => [...a, ...a, i], []))
areduce產(chǎn)生的元素多于其輸入的示例。
添加回答
舉報(bào)