You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript:基于MIME类型属性转换对象结构

需求与实现方案

问题描述

给定如下JavaScript对象作为输入:

const mimeTypes = {
  image: [".svg", ".png", ".gif", ".jpeg", ".jpg"],
  application: [".pdf", ".zip"],
  text: [".txt", ".csv"]
};

需要将其转换为按MIME类型组织的对象,预期输出如下:

const result = {
  "image/*": [".svg", ".png", ".gif", ".jpeg", ".jpg"],
  "application/zip": [".zip"],
  "application/pdf": [".pdf"],
  "text/*": [".txt", ".csv"]
};

核心规则:

  • application类型需要按后缀拆分,对应到具体的MIME类型(比如.zip对应application/zip,.pdf对应application/pdf)
  • 其他类型(如image、text)使用通用格式类型/*
  • 若输入仅包含某一类(比如{ text: [".txt", ".csv"] }),输出仅保留该类对应的结构

简洁实现代码

function convertMimeTypes(input) {
  const result = {};
  // 遍历输入对象的每个类型键与对应后缀数组
  for (const [type, extensions] of Object.entries(input)) {
    if (type === 'application') {
      // 处理application类型,逐个拆分后缀
      extensions.forEach(ext => {
        const subtype = ext.slice(1);
        result[`${type}/${subtype}`] = [ext];
      });
    } else {
      // 其他类型直接使用通用MIME格式
      result[`${type}/*`] = [...extensions];
    }
  }
  return result;
}

// 测试完整输入
const mimeTypes = {
  image: [".svg", ".png", ".gif", ".jpeg", ".jpg"],
  application: [".pdf", ".zip"],
  text: [".txt", ".csv"]
};
console.log(convertMimeTypes(mimeTypes));

// 测试仅text的输入
const textOnly = { text: [".txt", ".csv"] };
console.log(convertMimeTypes(textOnly));

代码说明

  • 用Object.entries()遍历输入对象的键值对,同时获取类型和对应的后缀数组,写法简洁直观
  • 针对application类型,遍历每个后缀并截取掉开头的点,用类型/子类型作为键,值为仅包含当前后缀的数组
  • 其他类型直接拼接类型/*作为键,用扩展运算符[...extensions]复制原数组,避免修改原输入数组的副作用
  • 函数会自动根据输入的内容生成对应结构,输入仅包含某一类时,只会输出该类的结果

内容的提问来源于stack exchange,提问作者user21728514

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 02:52:20