将文件和文件名从URL数组拆分为新数组?

时间:2019-12-24 14:35:29

标签: javascript

我在href数组上使用.map()来提取链接位置中的文件和文件名,并将它们放入新的数组中。

问题是如何将经过解构的数组const[file, folder]转换为一个数组,该数组将包含linkContainer变量所包含的每个URL的文件和文件夹,因为.map()正在迭代超过它?显然,它现在只收集第一个。

URL示例包括:

  • http://192.168.12.44:8090/SPECSHEET_PDF/R3CRDT_SPSHT.pdf
  • http://192.168.12.44:8090/INST_SHEET/R3CRN-trim_0.pdf

    const liveLinks = linkContainer.map(function(v, a){
    // v contains each URL
    const [file, folder] = v.split('/').reverse();
    if(document.location.hostname.indexOf('wacdev.waclighting.com') == 0) {
        urlResult[a] = v + 'http://192.168.12.44:8090'; // just for testing
          return urlResult;
    } else {
          urlResult[a] = v + 'https://waclighting-images.s3.amazonaws.com';
          return urlResult;
    }
    
    }); // Right now, file or folder only contains ONE file or folder name
    

理想的输出为:

console.log(file, folder) // [SPECSHEET_PDF, INST_SHEET] [R3CRDT_SPSHT.PDF, R3CRN-trim_0.pdf] etc

1 个答案:

答案 0 :(得分:0)

使用.slice()仅对数组的最后两个元素进行切片。

var url1 = "http://192.168.12.44:8090/SPECSHEET_PDF/R3CRDT_SPSHT.pdf"

var url2 = "http://192.168.12.44:8090/INST_SHEET/R3CRN-trim_0.pdf"

const [file, folder] = url1.split("/").slice(-2);
const [file2, folder2] = url2.split("/").slice(-2);

const files = [file, file2];
const folders = [folder, folder2];

console.log(files, folders);

如果URL的数量可以是任何数字:

var urls = ["http://192.168.12.44:8090/SPECSHEET_PDF/R3CRDT_SPSHT.pdf", "http://192.168.12.44:8090/INST_SHEET/R3CRN-trim_0.pdf"]

urls = urls.map(v => v.split("/").slice(-2))

//[file, file2], [folder, folder2] format
console.log(urls.map(v => v[0]), urls.map(v => v[1]));

//[file, folder] format
console.log(urls);