2016-09-15 56 views
0
function remove(e){ 
    self.deletingId = e.target.parentNode.firstElementChild.id; 
    for(var i = 0; i<Object.keys(DataMixin.data.holidayList).length; i++){ 
     if(self.deletingId == DataMixin.data.holidayList[i+1].reason){ 
      console.log('matched'); //prints on deletion of 5th object and then 3rd object as well 
      delete DataMixin.data.holidayList[i+1]; 
      e.target.parentNode.remove(); 
      console.log('ID deleted is: ' , DataMixin.data.holidayList[i+1]); // still prints the value 
     } 
    } 
} 

出与键/值对10个的对象,我成功删除第五对象的对象属性,然后删除第三个目标是抛出错误:无法删除在一个循环

错误在这里:reasonDataMixin.data.holidayList[i+1].reason

+0

你是否意识到,当你删除一个条目数组缩短(因此你可能会尝试访问一个不存在的索引)? – FDavidov

+0

对数组项目的'delete'将该项目设置为'未定义',它不会将其从数组中移除。这就是说,我迷失了你的逻辑,试图删除'i + 1'。 MCVE肯定会有所帮助。也许你应该以相反的顺序迭代 –

+0

@FDavidov我打算使用'onclick'去除函数,它应该在循环内设置'i'值为0? – Satyadev

回答

0

未定义在我看来,(Object.keys(DataMixin.data.holidayList)。长度 - 1)是DataMixin.data.holidayList最后一个属性的关键,所以,如果你这样做DataMixin。 data.holidayList [i + 1],在循环结束时,如果找不到对象属性。

+0

但对象'DataMixin.data.holidayList'索引从1开始,所以这就是为什么我在做'i + 1' – Satyadev