Ich lerne d3 und wenn ich ein einfaches Array von Zahlen erstelle, dann versuche, die Daten an eine einfache Gruppe von Elementen zu binden, aber die Schlüsselfunktion verwende, läuft sie zweimal durch die Schleife. Das erste Mal sagt es mir, dass die Werte des Arrays undefiniert sind. Beim zweiten Mal sind sie verfügbar.
Hier ist der HTML-Code:
Und hier ist der JavaScript-Code:
var numbers = [1, 2, 3];
function whichNumber(n){
console.log('n----:' + n);
return n;
}
var testKeyFunction = d3.selectAll("div.testBind").data(numbers, whichNumber);
Wenn ich das ausführe, erhalte ich:
n----:undefined
n----:undefined
n----:undefined
n----:1
n----:2
n----:3
Hier ist ein Fiddler: http://jsfiddle.net/5f8mo2sa/3/
Der Grund, warum dies ein Problem ist (abgesehen von wtf), liegt darin, dass wenn die Daten ein Array von Objekten sind und ich versuche, einen Schlüssel in der Funktion zu referenzieren, wirft es einen undefinierten Fehler.