我使用以下方法制作了一个数组:
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生成的数组是什么,我不是 理解?任何帮助将不胜感激。
答案 0 :(得分:1)
使用Array.filter()
:
arr = arr.filter(function(x){
return x.trim() !== 'jim';
});
答案 1 :(得分:0)
詹姆斯是对的:空白字符在这里引起了问题。 当我在上面的示例中尝试测试警报时: 'jim'!=='jim'。 regEx的第一部分/括号在匹配的字符串中包含空格字符。 生成的数组很可能是:arr = ['jim','bob','arthur','jim','fred']。