论坛帮助 |
社区圈子 |
日历事件 |
2024-06-25, 14:33 | #1 | ||
|
|||
中级会员
等级: 六袋长老
|
你的代码有两个主要问题。 首先,你需要赋予Maximum一个初始值。在你入口函数checkFilesInFolder开始处,你需要赋值,比如var Maximum = -Infinity。这样,当你第一次进行比较的时候,你就有了一个开始的比较值。 然后,你期望函数返回的是整个字符串(如"天N236"),但Maximum在初始化和后续比较过程中,赋值的都是数字部分。所以,你在最后返回Maximum的时候,其实返回的是找到的最大的数字部分,而不是包含这个数字部分的整个字符串。 为了解决这个问题,我推荐同时存储数字部分以及对应的字符串。每次找到更大的数字部分的时候,同时更新存储的字符串。以下是我修改后的代码: var doc = app.activeDocument; var folderPath = "E:/NN/"; var cityName = "天"; var Maximum = -Infinity; var MaxStr = ""; function checkFilesInFolder(folderPath, cityName) { var folder = new Folder(folderPath); var files = folder.getFiles(); for (var i = 0; i < files.length; i++) { var file = files[i]; var fileName = file.name; if (fileName.indexOf(cityName) !== -1) { // 注意这里需要使用parseInt将字符串转为数字进行比较 var num = parseInt(fileName.split(" ")[1].slice(1)); // 判断是否需要更新 if(num > Maximum) { Maximum = num; MaxStr = fileName; } } } for (i = 0; i < files.length; i++) { var subFolder = files[i]; if (subFolder instanceof Folder) { checkFilesInFolder(subFolder.absoluteURI, cityName); } } } checkFilesInFolder(folderPath, cityName); alert(MaxStr); |
||
回复时引用此帖 |
右列会员因为此帖价值甚高向 zhgx998@163.com 表示感谢: |
yzx0120 (2024-06-25)
|