我在这样的数组中设置一个元素:
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()
的内容?
答案 0 :(得分:3)
命令是:(将其设置为未定义)
delete dialogs[id];
如果您想完全删除:请使用splice
。
我错误地认为它是一个你要删除的对象属性(这里删除会很好 - 只有解决方案)
howevert - 你有一个数组,正确的答案是使用splice
。
答案 1 :(得分:1)
我建议你看看这个tutorial。它很好地解释了如何在javascript中使用数组。
delete
方法不删除元素,只是将其替换为undefined
。要从数组中删除元素,您需要splice
。
根据MDN,以下是如何使用它:
array.splice(index , howMany[, element1[, ...[, elementN]]])
因此,您需要要开始删除的index
,howMany
是您要删除的元素数。
对于你的情况,它是:
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