JS脚本筛选项目文件生成数组调用slice等方法提示对象不支持问题求助
问题根因
你存到fitem1数组里的元素不是字符串类型,是Shell.Application接口返回的FolderItem COM对象:
- 正则匹配
ptregx.test(item)时,会隐式调用对象的toString()方法拿到文件名,所以筛选逻辑能正常执行 - 你直接对
ptresult[i](也就是FolderItem对象)调用只有字符串/数组才有的slice()方法,自然会报对象不支持该方法的错误,和外层的ptresult是不是数组没有关系。
解决方案
操作前先把FolderItem对象转成文件名/路径字符串即可,有两种常用写法:
- 调用方法前先显式转字符串:
// 先取文件名字符串,再执行slice var fileName = ptresult[i].Name; var processedName = fileName.slice(0, -2);
- 存数组的时候就直接存字符串,后续所有操作都不用额外转换:
修改最初遍历文件的逻辑:
for (i=0;i<items.Count;i++) { fitem = items.Item(i); // 直接存文件名,而不是存FolderItem对象 fitem1.push(fitem.Name); }
如果需要用到文件完整路径,把fitem.Name换成fitem.Path即可。
内容的提问来源于stack exchange,提问作者Thyago Oliveira
相关产品推荐
相关产品推荐

