Ich versuche w2ui
multi select in einem der d3-Diagramme zu implementieren, die gerade arbeiten.Array.prototype verursacht Fehler
Dies ist der Link zu Beispiel jsfiddle mit dem Problem.
Ich habe drei Funktion:
//get a column of an array
Array.prototype.getColumn = function(name) {
return this.map(function(el) {
// gets corresponding 'column'
if (el.hasOwnProperty(name)) return el[name];
// removes undefined values
}).filter(function(el) {
return typeof el != 'undefined';
});
};
//remove duplicates in an array
Array.prototype.contains = function(v) {
for (var i = 0; i < this.length; i++) {
if (this[i] === v) return true;
}
return false;
};
Array.prototype.unique = function() {
var arr = [];
for (var i = 0; i < this.length; i++) {
if (!arr.contains(this[i])) {
arr.push(this[i]);
}
}
return arr;
}
ich diese drei in einer meiner Funktionen implementieren müssen.
Problem ist, dass, wenn ich versuche, diese Funktionen mit Array.prototype
zu implementieren, ich Elemente in der Multiselect als "undefined"
. Die Nummer "undefined"
ist direkt proportional zur Anzahl der Funktionen mit Array.prototype
Funktionen.
Wenn ich diese Funktionen zu entfernen, kann ich den Multi-Select bekommt richtig arbeiten (nur der Multi-Select-Teil, nicht das Diagramm als Ganze. Ich verstehe nicht, was den Fehler verursacht.
Jede Hilfe ist willkommen. Vielen Dank.
Und Sie haben gerade gelernt, warum es eine schlechte Idee ist, native Prototypen zu ändern. Stellen Sie nun diese regulären Funktionen statt. – adeneo
Und Sie haben gerade erfahren, warum es keine gute Idee ist, etwas zu tun, ohne einen vollständigen Plan für Ihre Ausführungsumgebung zu haben. Sie können native Prototypen problemlos ändern, solange Sie Kodierungsstandards benötigen, die nicht mit dieser Entscheidung in Konflikt stehen. –
Also, wenn ich die Funktionen als separate Funktion implementieren, wird es funktionieren? – driftking9987