0

次のように配列に要素を設定しています。

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

4 に答える 4

3

コマンドは : (未定義に設定)

delete dialogs[id];

完全に削除したい場合: を使用してspliceください。

編集

私はそれがあなたが削除したいオブジェクトプロパティであると誤って考えました(削除はここで問題ありません-そして唯一の解決策です)

ただし、配列があり、正しい答えは使用することspliceです。

于 2012-04-23T08:01:00.837 に答える
1

このチュートリアルをご覧になることをお勧めします。これは、JavaScriptで配列を操作する方法を非常によく説明しています。

このdeleteメソッドは要素を削除せず、単にそれを。に置き換えますundefined。配列から要素を削除するには、が必要spliceです。

MDNによると、使用方法は次のとおりです。

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

したがって、index削除を開始する場所が必要です。これhowManyは、削除する要素の数です。

あなたの場合、それは次のようになります:

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

indexOfを使用して値のインデックスを見つけることに注意してくださいid

于 2012-04-23T08:10:56.337 に答える
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

どちらか適切なものを選択してください。私は2番目の方が好きです。

于 2012-04-23T08:03:25.810 に答える
0

配列からアイテムを削除するときは、使用しますsplice

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

これによりアイテムが削除され、配列の長さが変更されることに注意してください。したがって、3 の配列で、このように継ぎ合わせると、配列の長さは 2 になります。

usingdeleteは配列には影響しませんが、その場所を離れますundefined。その場所に「設定を解除する」または「穴を残す」ようなものです。

delete dialogs[id];  //value at index "id" is now undefined 
于 2012-04-23T08:09:36.967 に答える