我有一个带字符串的数组,如果在字符串中没有写任何内容我想用.splice()
从数组中删除它。
不知何故,它没有获得所有空条目。如果开头有2个空条目,则只有一个。
这是我的fiddle和代码:
stringArray = ["", "", "Banana"];
console.log('before stringArray.length: ' + stringArray.length);
for (var i = 0; i < stringArray.length; i++) {
if (stringArray[i] === "") {
stringArray.splice(i, 1);
if (i > 0) i--;
}
}
console.log('after stringArray.length: ' + stringArray.length);
答案 0 :(得分:6)
你必须向后循环,因为每次你splice
,长度和索引都会改变:
for (var i = stringArray.length-1; i>=0; i--) {
if(stringArray[i] === ""){
stringArray.splice(i, 1);
}
}
使用Array.prototype.filter
的替代解决方案(文档页面为不支持此方法的旧浏览器提供填充程序):
stringArray = [ "","","Banana"];
var a = stringArray.filter(function(item) {
return item !== '';
});
console.log(a);
答案 1 :(得分:2)
另一个选项,当然是向后循环,使用while
循环:
var stringArray = ["", "", "", "Apple", "", "", "Banana", "", "", ""];
var i = stringArray.length;
while (i-- && (stringArray[i] !== "" || stringArray.splice(i, 1)));
console.log(stringArray); // ["Apple", "Banana"]