javascript - JS : Remove Element from an Array based on RegExp

标签 javascript arrays

所以我有一个 JavaScript 数组,有点像

  • 螺旋盖瓶[技术]
  • 不可退回的大瓶空瓶
  • 坦克
  • 潜水磁力瓶[技术]
  • 牢不可破的瓶子
  • 已满
  • 坦克
  • 潜水
  • 内容(5 个,共 5 个)
  • eine Flasche austrinken ein Baby mit
  • der Flasche ernähren ein Baby mit
  • der Flasche füttern mit der Flasche
  • 奥夫兹恩

我的问题是元素“Stuff (5 of 5)”。基本上,我不希望它出现在数组中。如果总是相同的话不会有什么大问题,但是数组是动态生成的并且后面的数字不同。因此,例如,一次是“Stuff (2 of 3)”,另一次是“Stuff (6 of 6)”等等。第一部分保持不变。

所以我认为正则表达式可以解决这个问题,因为这就是它们的实际用途。 所以我把这段代码拼凑在一起:

var regExpStuff = /Stuff\b/;
var array = removeItem(unique, regExpStuff);

函数removeItem()如下所示:

//remove item (string or number) from an array
    function removeItem(originalArray, itemToRemove) {
        var j = 0;
        while (j < originalArray.length) {
            if (originalArray[j] == itemToRemove) {
                originalArray.splice(j, 1);
        } else { j++; }
    }
    return originalArray;
    }

该函数可以很好地处理“string”等简单字符串,但事实并非如此。
有什么想法可能是错的吗?非常感谢您的帮助,

本尼

最佳答案

当您编写 if (originalArray[j] == itemToRemove) 时,您正在检查 originalArray[j] 是否等于范围。由于字符串 "# Stuff (5 of 5)" 与您的正则表达式不等于(毕竟,它是一个字符串,而不是正则表达式),因此您不会删除任何东西。

您需要更改检查正则表达式的方法。
例如:

function removeMatching(originalArray, regex) {
    var j = 0;
    while (j < originalArray.length) {
        if (regex.test(originalArray[j]))
            originalArray.splice(j, 1);
        else
            j++;
    }
    return originalArray;
}

关于javascript - JS : Remove Element from an Array based on RegExp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3661071/

相关文章:

c - 在 n 个元素的数组中,首先对 n-(root)n 个元素进行排序,我们必须对数组进行排序

javascript - 使用父对象中的私有(private)变量实现原型(prototype)继承

c - 返回字符串数组的函数 C

c - 在函数中初始化动态数组的值(C语言)

javascript - 无法在文档正文上调用 ajaxSubmit 函数

javascript - 使用 JavaScript 将两个数组合并为一个对象的数组

php - MySQL 获取数组添加重复值?

javascript - 成功提交到 Google 表格后,提交表单应显示消息

javascript - Jquery 切换不适用于 slider

javascript - Selenium Firefox 与 Python3 FirefoxProfile.set_preference() 被忽略