所以我的JavaScript数组有点像
我的问题是元素“ 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”这样的简单字符串,但它不是这样的 什么想法可能是错的?非常感谢帮助,
尼
答案 0 :(得分:2)
当您编写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;
}
答案 1 :(得分:1)
这是删除元素的图形解决方案 我想看看事情是如何变化的
<!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>