所以我有一个 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/