javascript - .splice() 没有完全缩短我的数组

标签 javascript arrays splice

我有一个包含字符串的数组,如果字符串中没有任何内容,我想使用 .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);

最佳答案

你必须向后循环,因为每次你拼接时,长度和索引都会改变:

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);

关于javascript - .splice() 没有完全缩短我的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15885525/

相关文章:

javascript - 数组和 pureCompulated 值

javascript - JavaScript 正则表达式超时错误

javascript - 按键数对对象数组进行排序 (JavaScript)

javascript - 如何通过 Javascript 数组中的键删除对象?

jquery - .splice( $.inArray()) 应该只删除匹配的项目

javascript - 使用javascript在一个视频标签中连续获取视频源

javascript - 限制复选框选择并绑定(bind)到 AngularJS 中的数组

php - Symfony2数组访问twig错误

java - 将对象从已实现的类添加到数组