根据图像类型对图像进行排序,然后将其放入带有打字稿

问题描述

我想根据图像的类型(好,中,坏)对图像进行排序,然后将其放入相应的文件夹中。

我的数据是带有图像名称标签的对象

export interface data = { image: string,label: 'good' | 'medium' | 'bad' }
export const DATA: data = {
 { image: 'name-of-image-1,label: 'good' }
 { image: 'name-of-image-2,label: 'bad' },{ image: 'name-of-image-3,label: 'good' },...,{ image: 'name-of-image-n,label: 'medium' }
}

图像位于服务器上,路径例如:smb:// test / images /

所以我在smb:// test / images / name-of-image-1

找到了我的第一张图像。

我想映射我的数据并根据标签将图像复制到相应的文件夹中。 (将带有标签“坏”的图片放入./bad文件夹中。

您有使用javascript(节点)做到这一点的想法吗?

解决方法

您提供的代码示例有一些问题可以在此处解决:

export interface Data {
    image: string,label: 'good' | 'medium' | 'bad'
}

export const data: Data[] = [
    { image: 'name-of-image-1',label: 'good' },{ image: 'name-of-image-2',label: 'bad' },{ image: 'name-of-image-3',{ image: 'name-of-image-n',label: 'medium' }
];

要解决您的问题,您可以使用.reduce相应地对图像label进行分组:

const sorted = data.reduce((prev,current) => ({
    ...prev,[current.label]: [
        ...prev[current.label],current.image
    ]
}),{ good: [],medium: [],bad: [] });

然后sorted的响应如下

{
    "good": [
        "name-of-image-1","name-of-image-3"
    ],"medium": [
        "name-of-image-n"
    ],"bad": [
        "name-of-image-2"
    ]
}