[英]Using splice with an array of strings
我有一个字符串数组。
我想知道如果数组中只有空格字符串并将其删除。
为此,我编写了以下代码,以修整空格,然后删除长度为0的元素。
修剪工作正常,一串空格实际上为0英尺长(我通过警报进行了检查),但未从数组中删除元素。
当然,搜索词是数组。
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);
}
}
提前致谢。
if (searchterms[i].toString().length = 0)
您正在if语句中执行赋值( = ),而应改为比较(equality operator == )。
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);
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将包含新的错误
尝试这个
var i = 0;
while (i < searchterms.length)
{
if (searchterms[i].trim().length == 0) searchterms.splice(i, 1);
i++;
}
尝试这个
描述:
Javascript数组splice()方法更改数组的内容,在删除旧元素的同时添加新元素。 句法:
array.splice(index, howMany, [element1][, ..., elementN]);
以下是参数的详细信息:
**index :** Index at which to start changing the array.
**howMany :** An integer indicating the number of old array elements to remove. If howMany is 0, no elements are removed.
element1, ..., elementN : The elements to add to the array. If you don't specify any elements, splice simply removes elements from the array.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.