Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将字符串相互匹配_Javascript_Jquery_String_Mime Types - Fatal编程技术网

Javascript 将字符串相互匹配

Javascript 将字符串相互匹配,javascript,jquery,string,mime-types,Javascript,Jquery,String,Mime Types,我需要将字符串与其他字符串相匹配,特别是将扩展名或mime类型与文件类型相匹配。例如“png”、“image/png”、“image/jpeg”应与“image”等匹配 目前我正在使用此方法: fileFormats = { 'image/png':'image', 'image/jpeg':'image', 'png':'image', 'jpeg':'image', 'jpg':'image' } fileFormats["png"] 但是,随着扩

我需要将字符串与其他字符串相匹配,特别是将扩展名或mime类型与文件类型相匹配。例如“png”、“image/png”、“image/jpeg”应与“image”等匹配

目前我正在使用此方法:

fileFormats = {
    'image/png':'image',
    'image/jpeg':'image',
    'png':'image',
    'jpeg':'image',
    'jpg':'image'
}

fileFormats["png"]
但是,随着扩展/mime类型数量的增加,这可能会变得相当重复。
我还认为应该有更好的方法来做这件事。有什么想法吗

不太可能,在某个时候你仍然需要一本字典/地图

我的第一点意见是,不应该在同一个映射中混合使用MIME和文件扩展名。相反,您应该有两个地图:

extensionToMime = {};
mimeToExtension = {};
第二个注释是,1个扩展可以有多个MIME,因此extensionToMime映射的值应该是数组

但是,如果您确实希望避免使用映射(这将在O(1)btw中返回结果,很难更快),您仍然可以根据MIME类型的扩展找出一些规则来构建MIME类型。例如:

 var simpleMimes = { "png":true, "jpeg":true, "gif":true }; // mimicking a set
 // then, when you need it:
 function getMimeFromExtension(ext) {
   if (ext in simpleMimes) {
     return "image/" + ext;
   }
   return extensionToMime[ext];
 }

这显然不可能适用于所有扩展名,而且只有在使用少量MIME时才有效,这些MIME可以像这样轻松构建。

如果将格式名称映射到MIME类型和/或文件扩展名,则不应重复。然后可以反转列表:

mimeTypes = {
    'image' : ['image/png', 'image/jpeg', 'png', 'jpeg', 'jpg', ...],
    'text'  : [ . . .],
    . . .
}
fileFormats = {};
for (type in mimeTypes) {
    mimeList = mimeTypes[type];
    for (i = 0, n = mimeList.length; i < n; ++i) {
        fileFormats[mimeList[i]] = type;
    }
}
mimeTypes={
'图像':['image/png','image/jpeg','png','jpeg','jpg',…],
“文本”:[…],
. . .
}
文件格式={};
for(输入mimeTypes){
mimeList=mimeTypes[type];
对于(i=0,n=mimeList.length;i