JavaScript splice()不起作用

时间:2014-04-18 02:57:37

标签: javascript

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,第二个日志也打印null。为什么没有拼接?这有时也是数组中的最后一项。你不能只用一个元素拼接一个数组吗?如果它不是this.phrases中的最后一项,则会发生同样的事情。

修改: s似乎也未设置为任何值。

编辑:我添加的两个长度日志打印相同的数字。

编辑:事实并非如此。奇怪的事情正在发生,可能不涉及这部分代码。我只是想知道我是否正确使用splice()。

2 个答案:

答案 0 :(得分:1)

切换这两行:

var s = this.phrases.splice(i,1);

console.log('splice ' + this.phrases[i]);

对此:

console.log('splice ' + this.phrases[i]);

this.phrases.splice(i, 1);

i--;

答案 1 :(得分:0)

const indexOfValue = treeSelectDataTemp.findIndex((item: any) => item.value === deleteIndexId[d]);

 console.log("  ###########  deleted indexOfValue ", indexOfValue);
 if (indexOfValue !== -1) {
    treeSelectDataTemp.splice(indexOfValue, 1);
 }