Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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_P5.js - Fatal编程技术网

Javascript 删除包含数字的数组元素

Javascript 删除包含数字的数组元素,javascript,p5.js,Javascript,P5.js,我在Stackoverflow上看到了几个答案,但没有一个对我有帮助。我有一个近100000个单词的庞大数组,我正试图删除其中所有包含数字的单词。我使用以下方法来实现此目的: for(var i = 0; i < words.length; i++){ if (hasNumbers(words[i]) { words.splice(i, 1); } function hasNumbers(t) { return /\d/

我在Stackoverflow上看到了几个答案,但没有一个对我有帮助。我有一个近100000个单词的庞大数组,我正试图删除其中所有包含数字的单词。我使用以下方法来实现此目的:

    for(var i = 0; i < words.length; i++){
      if (hasNumbers(words[i]) {
        words.splice(i, 1);
      }


   function hasNumbers(t)
      { return /\d/.test(t); }
for(变量i=0;i
它似乎有效,但并非一直有效,因为我仍然会得到包含数字的单词。我可以做些什么来让它删除所有包含数字的单词


(我在我的js中使用p5.js)

这是因为当你在索引I中删除一个单词时,下一个单词将有索引I,但你仍然增加了I,从而跳过了一个你从未检查过的单词

要解决此问题,您可以反向浏览阵列:

for(var i = words.length - 1; i >= 0; i--){
    // etc.
以下是删除带数字的单词的较短方法:

words = words.filter(a => !hasNumbers(a));
最后,您真的应该调用第二个函数hasdights而不是hasNumbers。单词“digit”和“number”的含义略有不同

下面是一个使用ES6语法的代码段,它定义了相反的函数HasNodeDigits,并将其应用于一些示例数据:

让words=['abcd'、'ab0d'、'4444'、'-)#'、'&9µ*';
设hasNoDigits=s=>/^\D*$/.test;

console.log(words.filter(hasNoDigits));
我开始写这篇文章,然后trincot回答了。他的回答是正确的,不过随着ES5数组函数的广泛使用,我觉得你可以将它简化很多

window.addEventListener('load',function(){
风险值数据=[
“w3.org”,
"google.com",,
'0001118.com'
]这应该是你的数据,我没有,所以我编的。
var no_nums=data.filter(函数(项){
//根据正则表达式测试每个字符串,反转值(false变为true,true变为false)
返回!/\d/.test(项目);
});
var results=document.getElementById('results');
无任何费用(功能(项目){
results.innerHTML+=item+'
'; //循环遍历每个新数组以添加项,以便我们可以看到它。 }); });


我从未使用过p5,但仅使用纯javascript我没有遇到同样的错误。如果你能避免的话,不要将p5
拼接成一个循环。它有太多的开销。用它来决定要保留哪些单词。你是老板,谢谢你!这是一个让我感到不快的错误。谢谢,我修复了那个拼写错误。我只是简化了我在上面共享的代码中遇到了问题。提示:
words.filter(hasNumbers)
保留了错误的值集,即包含数字的值集。我会在这里使用一个小实用程序:
let not=fn=>v=>!fn(v);
words.filter(not(hasNumbers))
谢谢@Thomas!那
let
的内容到底是什么?我不知道那里发生了什么。@MichaelReader
let
var
的一个块范围版本,其后面的部分称为胖箭头
=>
,是编写函数的一种简写方式。