javascript - 从数组中删除空字符串(正则表达式) - Javascript

标签 javascript arrays parsing

我的项目中有以下代码:

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/

相关文章:

javascript - 清除 HTML 破坏 jquery 中的追加

javascript - 鼠标位置未识别

JavaScript 循环引用循环中的最后一个数字

JavaScript SpeechSynthesisUtterance 正确说出数字

java - Consumers<X> 数组中的 ArrayStoreException

javascript - 从堆栈或表返回数组类型 - Javascript

在 C 中从整数数组创建字符串数组

java - 如何使用 GSON 解析 JSON 响应 (Java/Android)

node.js - Node - 解析带有合并单元格的 Excel 文件

java - 数组中的数组 - Java 代码