我在href数组上使用.map()
来提取链接位置中的文件和文件名,并将它们放入新的数组中。
问题是如何将经过解构的数组const[file, folder]
转换为一个数组,该数组将包含linkContainer
变量所包含的每个URL的文件和文件夹,因为.map()
正在迭代超过它?显然,它现在只收集第一个。
URL示例包括:
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
答案 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);