JavaScript:无法操作使用string.match生成的数组

时间:2014-06-27 18:57:23

标签: javascript arrays

我使用以下方法制作了一个数组:

var arr = [];
arr = string.match(/(?:^| )([a-z]+)(?= [A-Z])/g);

这按预期工作,数组已满,可以使用 console.log或alert()。

数组由我需要过滤的单词组成,所以我想尝试 使用.splice删除相同单词的不需要的实例:

for (var i = arr.length - 1; i >= 0; i--) {
    if (arr[i] === 'jim') {
        arr.splice(i, 1);
    }
}

for循环无法识别任何实例,例如'jim' 阵列虽然有几个。

我使用我自己制作的数组尝试了循环,它工作正常,即:

arr = ['jim','bob','arthur','jim','fred']

我还尝试了以下报告'jim'!=='jim'以及其他不等于'jim'的名称。同样,这个循环适用于自我分配的数组。

var i = arr.length;
while ( i-- )
if (arr[i] === 'jim')
    arr.splice(i, 1);
else
    alert( "'" + arr[i].toString() + "' !== 'jim'" );

string.match生成的数组是什么,我不是 理解?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

使用Array.filter()

可以节省大量时间
arr = arr.filter(function(x){
   return x.trim() !== 'jim';   
});

答案 1 :(得分:0)

詹姆斯是对的:空白字符在这里引起了问题。 当我在上面的示例中尝试测试警报时: 'jim'!=='jim'。 regEx的第一部分/括号在匹配的字符串中包含空格字符。 生成的数组很可能是:arr = ['jim','bob','arthur','jim','fred']。