Skip to content

reduce

Reduce an array with an async function

239 bytes

Usage

A reduce that handles callback functions that return a promise.

import * as
import _
_
from 'radashi'
const
const userIds: number[]
userIds
= [1, 2, 3, 4]
const
const api: {
users: {
find(id: number): Promise<{
name: string;
}>;
};
}
api
= {
users: {
find(id: number): Promise<{
name: string;
}>;
}
users
: {
async
function find(id: number): Promise<{
name: string;
}>
find
(
id: number
id
: number) {
return {
name: string
name
: `person ${
id: number
id
}` }
},
},
}
const
const users: {}
users
= await
import _
_
.
reduce<number, {}>(array: readonly number[], reducer: (acc: {}, item: number, index: number) => Promise<{}>, initialValue: {}): Promise<{}> (+1 overload)
export reduce

An async reduce function. Works like the built-in Array.reduce function but handles an async reducer function.

@seehttps://radashi.js.org/reference/async/reduce

@example

const result = await reduce([1, 2, 3], async (acc, item, index) => {
return acc + (await computeOnGPU(item))
}, 0)

@version12.1.0

reduce
(
const userIds: number[]
userIds
,
async (
acc: {}
acc
,
userId: number
userId
) => {
const
const user: {
name: string;
}
user
= await
const api: {
users: {
find(id: number): Promise<{
name: string;
}>;
};
}
api
.
users: {
find(id: number): Promise<{
name: string;
}>;
}
users
.
function find(id: number): Promise<{
name: string;
}>
find
(
userId: number
userId
)
return {
...
acc: {}
acc
,
[
userId: number
userId
]:
const user: {
name: string;
}
user
,
}
},
{},
) // { 1: { name: 'person 1' }, 2: { name: 'person 2' }, 3: { name: 'person 3' }, 4: { name: 'person 4' } }