添加/删除对象属性并删除null

添加/删除对象属性并删除null

问题描述:

我想记住自定义插件中的开放式手风琴。第一手风琴是默认打开的,因此:添加/删除对象属性并删除null

var active = [0]; 

我点击手风琴,然后从localStorage读得到的值。在我的单击事件:

var active = JSON.parse(localStorage.getItem(outerName)), 
    tab = $(this).find('h3').index(ui.tab[0]); 

if (tab in active) { 
    delete active[tab]; 
} else { 
    active[tab] = tab; 
} 
for (var i = 0; i < this.length; i++) { 
    if (active[i] == null) { 
     active.splice(i, 1); 
     i--; 
    } 
} 
localStorage.setItem(outerName, JSON.stringify(active)); 

这工作,除非我删除第一手风琴,然后单击第二个,我会得到重复值[1,1]。我已经每次都删除空值,所以这是原因,但我不知道如何正确获取值,以便如果切换手风琴,它将从对象中移除。

[0,3] =手风琴1和4打开

[0,1] =手风琴1和2是开放

+1

对每个手风琴使用带有一个条目的数组并不容易,它们的值设置为true/false? – zeroflagL 2013-05-04 07:05:55

+0

有不同数量的手风琴。无论如何,我修补我的插件,并检查为空,所以我可以替换值。我现在回答我自己的问题*叹气!* – stabbie 2013-05-04 07:07:56

+0

数组的大小也是可变的;) – zeroflagL 2013-05-04 07:09:18

好了,所以我修改我的插件,只得到有效字符串的数字,但我也修改了对象因为它被打破:

if (tab in active && active[tab] !== null) { 
    delete active[tab]; 
} else { 
    active[tab] = tab; 
} 

我得到[空,1,空],所以现在我写满空,只是与值[0,1,NULL]只有0和1被读更换由插件。

SO这么快就回答我自己的问题!