如何使用javascript / jQuery从数组中删除元素?

时间:2012-04-23 07:59:42

标签: javascript jquery

我在这样的数组中设置一个元素:

dialogs[id] = $.modal({
    title: "Admin",
    closeButton: true,
    content: content,
    width: false,
    resizeOnLoad: true,
    buttons: {
        'Close': function (win) {
            win.closeModal();
        }
    }
}).find('form') // Attach logic on forms
.submit(formSubmitHandler)
.end();

稍后我会检查是否存在这样:

if (!dialogs[id]) {
    loadAndShowDialog(id, link, url);
}

如何从对话框数组中删除id记录?是否有类似dialogs[id].Remove()的内容?

4 个答案:

答案 0 :(得分:3)

命令是:(将其设置为未定义)

delete dialogs[id];

如果您想完全删除:请使用splice

修改

我错误地认为它是一个你要删除的对象属性(这里删除会很好 - 只有解决方案)

howevert - 你有一个数组,正确的答案是使用splice

答案 1 :(得分:1)

我建议你看看这个tutorial。它很好地解释了如何在javascript中使用数组。

delete方法不删除元素,只是将其替换为undefined。要从数组中删除元素,您需要splice

根据MDN,以下是如何使用它:

array.splice(index , howMany[, element1[, ...[, elementN]]])

因此,您需要要开始删除的indexhowMany是您要删除的元素数。

对于你的情况,它是:

dialogs.splice( dialogs.indexOf( id ), 1 )

请注意使用indexOf查找id值的索引。

答案 2 :(得分:0)

您可以使用

delete dialogd[id]; //will not remove element, will set it to undefined

dialogs.splice(id,1); //will not work in case of non-numeric indices

选择合适的选项。我更喜欢第二种。

答案 3 :(得分:0)

从数组中删除项目时,请使用splice

dialogs.splice(id,1); //remove "1" item starting from index "id"

请注意,这会删除该项目,并更改数组长度。所以在3的数组中,如果我用这种方式拼接,那么数组的长度现在为2。

使用delete不会影响数组,但请保留该位置undefined。这就像在那个地方“不设置”或“留下一个洞”。

delete dialogs[id];  //value at index "id" is now undefined