Javascript JS:基于RegExp从数组中删除元素

Javascript JS:基于RegExp从数组中删除元素,javascript,arrays,Javascript,Arrays,所以我有一个JavaScript数组,有点像 螺旋盖瓶[技术] 不可更换的空瓶万能瓶 坦克 潜水磁瓶[技术] 牢不可破的瓶子 满满的 坦克 跳水 材料(5/5) 我是麻省理工学院的学生 在麻省理工学院婴儿医院 佛罗里达州的佛罗里达州 奥夫齐亨 我的问题是元素“Stuff(5/5)”。基本上,我不希望这个出现在数组中。如果数组总是相同的,这不会是一个大问题,但是数组是动态生成的,后面的数字不同。例如,准时是“三分之二”,另一次是“六分之六”等等。第一部分保持不变 所以我认为正则表达式可以解决这

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

  • 螺旋盖瓶[技术]
  • 不可更换的空瓶万能瓶
  • 坦克
  • 潜水磁瓶[技术]
  • 牢不可破的瓶子
  • 满满的
  • 坦克
  • 跳水
  • 材料(5/5)
  • 我是麻省理工学院的学生
  • 在麻省理工学院婴儿医院
  • 佛罗里达州的佛罗里达州
  • 奥夫齐亨
我的问题是元素“Stuff(5/5)”。基本上,我不希望这个出现在数组中。如果数组总是相同的,这不会是一个大问题,但是数组是动态生成的,后面的数字不同。例如,准时是“三分之二”,另一次是“六分之六”等等。第一部分保持不变

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

var regExpStuff = /Stuff\b/;
var array = removeItem(unique, regExpStuff);
函数removietem()如下所示:

//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;
    }
//从数组中删除项(字符串或数字)
函数删除项(原始排列、项删除){
var j=0;
而(j<原始阵列长度){
如果(原始阵列[j]==项目移动){
原始拼接(j,1);
}else{j++;}
}
回归原点;
}
该函数适用于“string”等简单字符串,但并非如此。
有什么想法吗?非常感谢您的帮助

Benny

当您编写
如果(originalArray[j]==itemToRemove)
时,您正在检查
originalArray[j]
是否等于该参数。由于字符串
“#Stuff(5/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;
}
函数移除匹配(原始数组,正则表达式){
var j=0;
而(j<原始阵列长度){
if(正则表达式测试(原始数组[j]))
原始拼接(j,1);
其他的
j++;
}
回归原点;
}
编写
时,如果(originalArray[j]==itemToRemove)
,则检查
originalArray[j]
是否等于参数。由于字符串
“#Stuff(5/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;
}
函数移除匹配(原始数组,正则表达式){
var j=0;
而(j<原始阵列长度){
if(正则表达式测试(原始数组[j]))
原始拼接(j,1);
其他的
j++;
}
回归原点;
}

以下是删除元素的图形解决方案 我喜欢看事情是如何变化的

<!DOCTYPE html>
<html>
<body>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
<script>
function myFunction() {
    var fruits= ["Banana", "Orange", "Lemon", "Apple", "Mango"];
    for (var i=0;i<fruits.length;i++){

    if( fruits[i] == "Lemon" ){ //remove Lemon
      var citrus = fruits.splice(i,1);
      i--;
    }
    if( fruits[i] == "Apple" ){ //remove Apple
      var citrus = fruits.splice(i,1);
      i--;
    }
    document.getElementById("demo").innerHTML = fruits+'<br>'+citrus;
 }
}
</script>
</body>
</html>

试试看

函数myFunction(){ var水果=[“香蕉”、“橙子”、“柠檬”、“苹果”、“芒果”];
对于(var i=0;i,这里是删除元素的图形解决方案 我喜欢看事情是如何变化的

<!DOCTYPE html>
<html>
<body>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
<script>
function myFunction() {
    var fruits= ["Banana", "Orange", "Lemon", "Apple", "Mango"];
    for (var i=0;i<fruits.length;i++){

    if( fruits[i] == "Lemon" ){ //remove Lemon
      var citrus = fruits.splice(i,1);
      i--;
    }
    if( fruits[i] == "Apple" ){ //remove Apple
      var citrus = fruits.splice(i,1);
      i--;
    }
    document.getElementById("demo").innerHTML = fruits+'<br>'+citrus;
 }
}
</script>
</body>
</html>

试试看

函数myFunction(){ var水果=[“香蕉”、“橙子”、“柠檬”、“苹果”、“芒果”]; 对于(var i=0;i