Ich habe die Lösungen gelesen und einige ausprobiert. Nachdem object[key]
ich versucht hatte, die Methode anzuwenden , stellte ich fest, dass sie nicht funktionieren würde. Ich wollte ein HashSet, das HTML-Elemente speichern kann. Beim Hinzufügen dieser Objekte key
wurde das in eine Zeichenfolge übersetzt, sodass ich ein eigenes Set basierend auf jQuery entwickelte. Es unterstützt add
, remove
, contains
und clear
.
var HashSet = function () {
var set = [];
this.add = function (obj) {
if (!this.contains(obj)) {
set.push(obj);
}
};
this.remove = function (obj) {
set = jQuery.grep(set, function (value) {
return value !== obj;
});
};
this.clear = function () {
set = [];
};
this.contains = function (obj) {
return $.inArray(obj, set) > -1;
};
this.isEmpty = function () {
return set.length === 0;
};
};
Hinweis
Wenn Sie $('#myElement')
dem Set etwas Ähnliches hinzufügen, sollten Sie das echte HTML-Element hinzufügen $('#myElement')[0]
. Oh ... und wenn Sie eine Liste der geänderten Steuerelemente behalten möchten, verwenden Sie den Namen des Elements (gab mir ein Problem mit den :radio
Steuerelementen).
Hinweis 2
Ich denke, das object[key]
könnte für Ihre ganzen Zahlen schneller sein.
Hinweis 3
Wenn Sie nur Zahlen oder Zeichenfolgen speichern möchten , ist dieser Satz schneller:
var HashSet = function () {
var set = {};
this.add = function (key) {
set[key] = true;
};
this.remove = function (key) {
delete set[key];
};
this.clear = function () {
set = {};
};
this.contains = function (key) {
return set.hasOwnProperty(key);
};
this.isEmpty = function () {
return jQuery.isEmptyObject(set);
};
};