循环添加与删除,确实splice很好用,而且功能强大,但是有个坑确实让人一时半会儿摸不着头脑。所以在此记下。
splice 是直接操作并修改数组的,所以当找到相对应的Array元素时,此时, i的 下标是之前数组的下标,而当删除此元素后,数组下标 i 位置中保存的数字变为了原先数组的下一个元素,然后到了下一个循环时,就跳过了这个元素。原理就是这样子,是不是有点绕。所以用 i = i-1就解决了。
for(var i = 0; i<rowData.length; i++){
var id = rowData[i][0];
var parentId = rowData[i][2];
if(id === parentId){
original_array.push(rowData[i]);
rowData.splice(i,1);
i = i -1;
}
}