for(var i = 0; i < this.phrases.length; i++) {
console.log('sort ' + this.phrases[i]);
console.log('sort length' + this.phrases.length);
if(this.phrases[i] == null) {
var s = this.phrases.splice(i, 1);
console.log('splice ' + this.phrases[i]);
console.log('splice length ' + this.phrases.length);
}
}
我有一个数组(this.phrases
)。我在另一节中提出了要删除等于空的短语。第一个日志打印null
,第二个日志也打印null
。为什么它没有拼接?这有时也是数组中的最后一项。你是否无法仅用一个元素拼接一个数组?同样的事情发生,但如果它不是this.phrases
的最后一项。JavaScript splice()不起作用
编辑:s
似乎也没有设置为任何值。
编辑:我添加的两个长度日志打印相同的数字。
编辑:这不是真的。奇怪的事情正在发生,可能不涉及这部分代码。我只想知道我是否正确使用splice()。
当一个元件与'.splice()'移除,则数组的元素的其余部分向下移动的指标,但无论这些变化如何,我都会继续递增。 –
但似乎什么都没有拼接。数组前后具有相同数量的元素。 – michaelAdam
'length'应该改变一些,但是如果不调整'i'来反击'i ++',循环可能不会删除每个'null'。 http://jsfiddle.net/7UWew/与http://jsfiddle.net/Q55nr/。你也可以使用['.filter()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter),只要你不需要'.splice()'的突变方面。 http://jsfiddle.net/7nmpE/ –