2

我有一个字符串数组。

我想检查数组中是否只有空白字符串并将它们删除。

为此,我编写了以下代码来修剪空白,然后删除长度 = 0 的元素。

修剪工作,空白字符串实际上是 0 长度(我用警报检查了这一点)但元素没有从数组中删除。

当然,searchterms 是数组。

for (var i=0;i<searchterms.length;i++)
        {       
        searchterms[i]=searchterms[i].trim();
        alert(searchterms[i]+" - "+searchterms[i].toString().length);
        if  (searchterms[i].toString().length = 0)
            {
            searchterms.splice(i,1);
            }
        }   

如果我改用以下代码,也会发生同样的情况:

for (var i=0;i<searchterms.length;i++)
        {       
        tempterm=searchterms[i].trim();
        alert(tempterm+" - "+tempterm.toString().length);
        if  (tempterm.toString().length = 0)
            {
            searchterms.splice(i,1);
            }
        }   

提前致谢。

4

3 回答 3

0
if  (searchterms[i].toString().length = 0)

您正在 if 语句中执行赋值(=),它应该是比较(相等运算符==)。

if  (searchterms[i].toString().length == 0)

另一个问题是splice修改了原始数组。因此,如果遇到空白元素,每次迭代的元素索引都会发生变化。

这也可以使用更简洁的方式完成Array.prototype.filter

var searchTerms = ['asdf', '', 'ed', '   ', 'd##'];    
var newTerms = searchTerms.filter(function(e) {
    return e.trim().length !== 0;
});

console.log(newTerms);

jsFiddle 演示

于 2013-08-22T09:26:32.637 回答
0
var temp = Array();
var k=0;

for (var i=0;i<searchterms.length;i++)
{       
         if((searchterms[i].trim())!="" && searchterms[i].length>0)
         {
           temp[k] = searchterms[i];
           k++;
         }

}  

Temp 将包含新数组

于 2013-08-22T09:26:33.483 回答
0

尝试这个

var i = 0;
while (i < searchterms.length)
{
    if (searchterms[i].trim().length == 0) searchterms.splice(i, 1);
    i++;
}
于 2013-08-22T09:27:26.773 回答