utils.ts 960 Bytes
/* eslint-disable @typescript-eslint/no-shadow */

interface isValueReturnProps {
    list: string[],
    error: string[],
}
/**
 * 判断 vals 值和 list 中value 值是否匹配 并返回未匹配列表
 * (1111, [{ key:1111 }] ) => { error:[], list:[1111] }
 * ([111,222], [{ key:111 }, { key:222 }]) => { error:[], list:[111,222] }
 * ([11,44],[{ key:11 }, { key:45 }]) => { error:[44], list:[11] }
 */
export const isValue = (vals: string | string[], list: any[]): isValueReturnProps => {
    const sets = new Set([...list.map(({ key }: any) => key)]);

    if (Array.isArray(vals)) {
        const error = vals.filter((key) => !sets.has(key));
        const list = vals.filter((key) => sets.has(key));
        return { list, error };
    }

    if (typeof vals === 'string') {
        if (sets.has(vals)) {
            return { error: [], list: [vals] }
        }
        return { error: [vals], list: [] }
    }

    return { error: [], list: [] };
}