Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用正则表达式从数组中删除字_Javascript_Arrays_Regex - Fatal编程技术网

Javascript 使用正则表达式从数组中删除字

Javascript 使用正则表达式从数组中删除字,javascript,arrays,regex,Javascript,Arrays,Regex,我正在创建一个程序,其中包括从数组中删除文本。如果数组中的单词中包含字母,则该单词将被删除。我的第一个测试是成功的,它是一个带有小数组的简单正则表达式: var regex = /z/; var words = ["eggs", "zebras", "lampshade"]; for (i = 0; i < words.length; i++) { let testResult = regex.test(words[i]); if (!testResult) { wor

我正在创建一个程序,其中包括从数组中删除文本。如果数组中的单词中包含字母,则该单词将被删除。我的第一个测试是成功的,它是一个带有小数组的简单正则表达式:

var regex = /z/;
var words = ["eggs", "zebras", "lampshade"];

for (i = 0; i < words.length; i++) {
  let testResult = regex.test(words[i]);

  if (!testResult) {
    words.splice(i, 1);
  }
}
console.log(words);

每次运行它时,它都会返回不符合正则表达式的值。例如,上面的代码返回了
['aa','aahed','aahs',…]作为其前几个值。我是否必须更改代码以处理更大的数组?我犯了一个我没有注意到的愚蠢的错误吗?

@Joey,在官方文件中,如果你看到了,试着用这种方式作为解决办法。@Igor Moraru的回答也解释了为什么会发生这种情况

console.log(words.filter(d => /z/.test(d))) 

我认为这可能是因为您正在拼接阵列并同时循环阵列

例如,如果数组长度为5,当前索引为2,则在拼接数组后,索引3处的项将移动到索引2,并在下一次迭代中跳过,因为下一个索引将为3


因此,您可以创建单词的克隆并对其进行更改,同时迭代原始数组

你能试试这样用吗?log(words.filter(d=>/z/.test(d)))很高兴听到这个消息!是的,您可以通过尝试以下数组来验证这一点:
['a','a','z','a','a']
您将看到['a','z','a'],似乎每个假值都会通过下一个值,不管它是真是假。
console.log(words.filter(d => /z/.test(d)))