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/ –