@rvoh/dream
    Preparing search index...

    Function compact

    • Removes all null and undefined values from an array or object.

      Examples: compact(['a', 2, null, undefined]) // ['a', 2] compact({ a: 1, b: 'b', c: null, d: undefined }) // { a: 1, b: 'b' }

      Type Parameters

      • T extends any[] | { [key: string]: any }
      • CompactedArrayElementType extends any
      • NonNullKeys extends
            | string
            | number
            | (() => ArrayIterator<number>)
            | {
                "[iterator]"?: boolean;
                "[unscopables]"?: boolean;
                at?: boolean;
                concat?: boolean;
                copyWithin?: boolean;
                entries?: boolean;
                every?: boolean;
                fill?: boolean;
                filter?: boolean;
                find?: boolean;
                findIndex?: boolean;
                flat?: boolean;
                flatMap?: boolean;
                forEach?: boolean;
                includes?: boolean;
                indexOf?: boolean;
                join?: boolean;
                keys?: boolean;
                lastIndexOf?: boolean;
                length?: boolean;
                map?: boolean;
                pop?: boolean;
                push?: boolean;
                reduce?: boolean;
                reduceRight?: boolean;
                reverse?: boolean;
                shift?: boolean;
                slice?: boolean;
                some?: boolean;
                sort?: boolean;
                splice?: boolean;
                toLocaleString?: boolean;
                toString?: boolean;
                unshift?: boolean;
                values?: boolean;
                [key: number]: boolean | undefined;
            }
            | (() => string)
            | {
                (...items: ConcatArray<number>[]): number[];
                (...items: (number | ConcatArray<number>)[]): number[];
            }
            | ((searchElement: number, fromIndex?: number) => number)
            | ((searchElement: number, fromIndex?: number) => number)
            | ((start?: number, end?: number) => number[])
            | ((searchElement: number, fromIndex?: number) => boolean)
            | ((index: number) => number | undefined)
            | {
                (): string;
                (
                    locales: string | string[],
                    options?: NumberFormatOptions & DateTimeFormatOptions,
                ): string;
            }
            | ((separator?: string) => string)
            | {
                <S extends number>(
                    predicate: (
                        value: number,
                        index: number,
                        array: number[],
                    ) => value is S,
                    thisArg?: any,
                ): this is S[];
                (
                    predicate: (value: number, index: number, array: number[]) => unknown,
                    thisArg?: any,
                ): boolean;
            }
            | (
                (
                    predicate: (value: number, index: number, array: number[]) => unknown,
                    thisArg?: any,
                ) => boolean
            )
            | (
                (
                    callbackfn: (value: number, index: number, array: number[]) => void,
                    thisArg?: any,
                ) => void
            )
            | (
                <U>(
                    callbackfn: (value: number, index: number, array: number[]) => U,
                    thisArg?: any,
                ) => U[]
            )
            | {
                <S extends number>(
                    predicate: (
                        value: number,
                        index: number,
                        array: number[],
                    ) => value is S,
                    thisArg?: any,
                ): S[];
                (
                    predicate: (value: number, index: number, array: number[]) => unknown,
                    thisArg?: any,
                ): number[];
            }
            | {
                (
                    callbackfn: (
                        previousValue: number,
                        currentValue: number,
                        currentIndex: number,
                        array: number[],
                    ) => number,
                ): number;
                (
                    callbackfn: (
                        previousValue: number,
                        currentValue: number,
                        currentIndex: number,
                        array: number[],
                    ) => number,
                    initialValue: number,
                ): number;
                <U>(
                    callbackfn: (
                        previousValue: U,
                        currentValue: number,
                        currentIndex: number,
                        array: number[],
                    ) => U,
                    initialValue: U,
                ): U;
            }
            | {
                (
                    callbackfn: (
                        previousValue: number,
                        currentValue: number,
                        currentIndex: number,
                        array: number[],
                    ) => number,
                ): number;
                (
                    callbackfn: (
                        previousValue: number,
                        currentValue: number,
                        currentIndex: number,
                        array: number[],
                    ) => number,
                    initialValue: number,
                ): number;
                <U>(
                    callbackfn: (
                        previousValue: U,
                        currentValue: number,
                        currentIndex: number,
                        array: number[],
                    ) => U,
                    initialValue: U,
                ): U;
            }
            | {
                <S extends number>(
                    predicate: (value: number, index: number, obj: number[]) => value is S,
                    thisArg?: any,
                ): S | undefined;
                (
                    predicate: (value: number, index: number, obj: number[]) => unknown,
                    thisArg?: any,
                ): number | undefined;
            }
            | (
                (
                    predicate: (value: number, index: number, obj: number[]) => unknown,
                    thisArg?: any,
                ) => number
            )
            | (() => ArrayIterator<[number, number]>)
            | (() => ArrayIterator<number>)
            | (() => ArrayIterator<number>)
            | (
                <U, This = undefined>(
                    callback: (
                        this: This,
                        value: number,
                        index: number,
                        array: number[],
                    ) => U | readonly U[],
                    thisArg?: This,
                ) => U[]
            )
            | (<A, D extends number = 1>(this: A, depth?: D) => FlatArray<A, D>[])
            | (() => number | undefined)
            | ((...items: number[]) => number)
            | (() => number[])
            | (() => number | undefined)
            | ((compareFn?: (a: number, b: number) => number) => this)
            | {
                (start: number, deleteCount?: number): number[];
                (start: number, deleteCount: number, ...items: number[]): number[];
            }
            | ((...items: number[]) => number)
            | ((value: number, start?: number, end?: number) => this)
            | ((target: number, start: number, end?: number) => this)
      • RetType extends
            | Exclude<CompactedArrayElementType, null | undefined>[]
            | {
                [K in
                    | string
                    | number
                    | (() => ArrayIterator<number>)
                    | {
                        "[iterator]"?: boolean;
                        "[unscopables]"?: boolean;
                        at?: boolean;
                        concat?: boolean;
                        copyWithin?: boolean;
                        entries?: boolean;
                        every?: boolean;
                        fill?: boolean;
                        filter?: boolean;
                        find?: boolean;
                        findIndex?: boolean;
                        flat?: boolean;
                        flatMap?: boolean;
                        forEach?: boolean;
                        includes?: boolean;
                        indexOf?: boolean;
                        join?: boolean;
                        keys?: boolean;
                        lastIndexOf?: boolean;
                        length?: boolean;
                        map?: boolean;
                        pop?: boolean;
                        push?: boolean;
                        reduce?: boolean;
                        reduceRight?: boolean;
                        reverse?: boolean;
                        shift?: boolean;
                        slice?: boolean;
                        some?: boolean;
                        sort?: boolean;
                        splice?: boolean;
                        toLocaleString?: boolean;
                        toString?: boolean;
                        unshift?: boolean;
                        values?: boolean;
                        [key: number]: boolean | undefined;
                    }
                    | (() => string)
                    | {
                        (...items: ConcatArray<number>[]): number[];
                        (...items: (number | ConcatArray<number>)[]): number[];
                    }
                    | ((searchElement: number, fromIndex?: number) => number)
                    | ((searchElement: number, fromIndex?: number) => number)
                    | ((start?: number, end?: number) => number[])
                    | ((searchElement: number, fromIndex?: number) => boolean)
                    | ((index: number) => number | undefined)
                    | {
                        (): string;
                        (
                            locales: string | string[],
                            options?: NumberFormatOptions & DateTimeFormatOptions,
                        ): string;
                    }
                    | ((separator?: string) => string)
                    | {
                        <S extends number>(
                            predicate: (
                                value: number,
                                index: number,
                                array: number[],
                            ) => value is S,
                            thisArg?: any,
                        ): this is S[];
                        (
                            predicate: (
                                value: number,
                                index: number,
                                array: number[],
                            ) => unknown,
                            thisArg?: any,
                        ): boolean;
                    }
                    | (
                        (
                            predicate: (
                                value: number,
                                index: number,
                                array: number[],
                            ) => unknown,
                            thisArg?: any,
                        ) => boolean
                    )
                    | (
                        (
                            callbackfn: (value: number, index: number, array: number[]) => void,
                            thisArg?: any,
                        ) => void
                    )
                    | (
                        <U>(
                            callbackfn: (value: number, index: number, array: number[]) => U,
                            thisArg?: any,
                        ) => U[]
                    )
                    | {
                        <S extends number>(
                            predicate: (
                                value: number,
                                index: number,
                                array: number[],
                            ) => value is S,
                            thisArg?: any,
                        ): S[];
                        (
                            predicate: (
                                value: number,
                                index: number,
                                array: number[],
                            ) => unknown,
                            thisArg?: any,
                        ): number[];
                    }
                    | {
                        (
                            callbackfn: (
                                previousValue: number,
                                currentValue: number,
                                currentIndex: number,
                                array: number[],
                            ) => number,
                        ): number;
                        (
                            callbackfn: (
                                previousValue: number,
                                currentValue: number,
                                currentIndex: number,
                                array: number[],
                            ) => number,
                            initialValue: number,
                        ): number;
                        <U>(
                            callbackfn: (
                                previousValue: U,
                                currentValue: number,
                                currentIndex: number,
                                array: number[],
                            ) => U,
                            initialValue: U,
                        ): U;
                    }
                    | {
                        (
                            callbackfn: (
                                previousValue: number,
                                currentValue: number,
                                currentIndex: number,
                                array: number[],
                            ) => number,
                        ): number;
                        (
                            callbackfn: (
                                previousValue: number,
                                currentValue: number,
                                currentIndex: number,
                                array: number[],
                            ) => number,
                            initialValue: number,
                        ): number;
                        <U>(
                            callbackfn: (
                                previousValue: U,
                                currentValue: number,
                                currentIndex: number,
                                array: number[],
                            ) => U,
                            initialValue: U,
                        ): U;
                    }
                    | {
                        <S extends number>(
                            predicate: (
                                value: number,
                                index: number,
                                obj: number[],
                            ) => value is S,
                            thisArg?: any,
                        ): S | undefined;
                        (
                            predicate: (value: number, index: number, obj: number[]) => unknown,
                            thisArg?: any,
                        ): number | undefined;
                    }
                    | (
                        (
                            predicate: (value: number, index: number, obj: number[]) => unknown,
                            thisArg?: any,
                        ) => number
                    )
                    | (() => ArrayIterator<[number, number]>)
                    | (() => ArrayIterator<number>)
                    | (() => ArrayIterator<number>)
                    | (
                        <U, This = undefined>(
                            callback: (
                                this: This,
                                value: number,
                                index: number,
                                array: number[],
                            ) => U | readonly U[],
                            thisArg?: This,
                        ) => U[]
                    )
                    | (<A, D extends number = 1>(this: A, depth?: D) => FlatArray<A, D>[])
                    | (() => number | undefined)
                    | ((...items: number[]) => number)
                    | (() => number[])
                    | (() => number | undefined)
                    | ((compareFn?: (a: number, b: number) => number) => this)
                    | {
                        (start: number, deleteCount?: number): number[];
                        (start: number, deleteCount: number, ...items: number[]): number[];
                    }
                    | ((...items: number[]) => number)
                    | ((value: number, start?: number, end?: number) => this)
                    | ((target: number, start: number, end?: number) => this)]: Exclude<
                    { [key: string]: any }[K],
                    null | undefined,
                >
            }

      Parameters

      • obj: T

        The array or object to compact

      Returns RetType

      A new array or object with all null and undefined values removed