无法让JS正确评估两个相同的字符串

时间:2010-12-28 22:22:34

标签: javascript regex if-statement

我可以在日志中看到循环期间有多个匹配,但它只在最后一次迭代时返回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!

1 个答案:

答案 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 +