我可以在日志中看到循环期间有多个匹配,但它只在最后一次迭代时返回true(并将文件添加到数组中)。 'typeof'告诉我它们都是字符串,它们在控制台中看起来完全相同。无法想象什么会让JS看不到它们是相同的。
空格或方括号会导致问题吗?
var name = file.split('.');
for (l=0;l<d.length;l++)
{
var n = d[l].split('.');
var r = n[0].replace(/\[\d\]$/,''); //chop off last bracket in file name
// tells me both variables are strings
console.log('r is a: ' + (typeof r) + ' name is a: ' + (typeof name[0]));
if(r && r == name[0])
{
count_array.push(r);
console.log('>>>>>>>>>>>>>>>' + r + ' added to array');
}
}
THX!
答案 0 :(得分:1)
你的问题是,呃,远非明确。但是在黑暗中刺伤,你有这条线:
var r = n[0].replace(/\[\d\]$/,''); //chop off last bracket in file name
这将删除其中包含一个数字的成对括号,例如foo[1]
=&gt; foo
。它不会删除在它们之间有两位或更多位数的成对括号组,例如说foo[10]
=&gt; foo
。为此,你想要:
var r = n[0].replace(/\[\d+\]$/,''); //chop off last bracket in file name
// ^--- Added the +