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

Adding/deleting object properties and removing null

本文关键字:删除 null 属性 对象 添加      更新时间:2023-09-26

我试图记住在自定义插件中打开手风琴。默认情况下,第一个手风琴是打开的,因此:

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] = Accordion 1和2是打开的

Ok,所以我修补了我的插件,只从活动字符串中获取数字,但我也修改了我的对象,因为它被打破了:

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

我得到[null,1,null],所以现在我覆盖null,只是用值[0,1,null]替换它,只有0和1是由插件读取。

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