我的项目中有以下代码:
for(i = 0; i < inputArr.length; i++) {
if(accountsBool) {
inputArr[i] = inputArr[i].split(/\s+/);
if (inputArr[i] == "" || !inputArr[i].match(/[^\s]/)) {
inputArr.splice(i,1);
}
}
}
我会尽力解释这个问题......
我需要这部分代码来删除所有空格和空字符串,但是这些行...
inputArr[i] = inputArr[i].split(/\s+/);
还有...
if (inputArr[i] == "" || !inputArr[i].match(/[^\s]/)) {
inputArr.splice(i,1);
}
...不要一起工作。我收到错误“对象不支持此属性或方法”。如果我注释掉其中一个并使用另一个运行代码,它似乎工作正常。语法似乎也是正确的。有什么想法吗?
inputArr 是从文本区域解析的字符串数组。
谢谢。
最佳答案
.split()
返回一个数组,它不能与 .match()
一起使用。
I need this portion of the code to remove all whitespace and empty strings, but the lines...
您似乎是在说,应从数组中删除不包含至少一个非空白字符的项目,并且应更新所有剩余项目以删除任何空白(但保留其他字符) 。如果是这样,请先使用 .replace()
删除空格,然后测试是否删除该项。
请注意,如果您在循环中使用 .splice()
,则需要调整迭代器变量 i
以允许缺少元素 - 或者更简单,向后循环。
for(i = inputArr.length - 1; i >= 0; i--) {
if(accountsBool) {
inputArr[i] = inputArr[i].replace(/\s/g,"");
if (inputArr[i] === "") {
inputArr.splice(i,1);
}
}
}
如果您说应删除不包含至少一个非空白字符的项目,但您希望在剩余元素中保留空白,请执行以下操作:
for(i = inputArr.length - 1; i >= 0; i--) {
if(accountsBool) {
if (!/[^\s]/.test(inputArr[i])) {
inputArr.splice(i,1);
}
}
}
另请注意,如果循环中没有其他处理,则应将 if(accountsBool)
测试移至循环之前,而不是在每次迭代时都执行此操作。
关于javascript - 从数组中删除空字符串(正则表达式) - Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14716966/