Stephan: Wie mehrstufigem Array eine Variable zuweisen?

Hallo Leute,

ich habe ein Array mit Standardwerten der folgenden Form:


var data = {
	labels : ["3","2","1","12","11","10","9","8","7","6","5","4"],
	datasets : [
		{
			label: "Werte1",
			fillColor: "rgba(220,220,220,0.5)",
			strokeColor: "rgba(220,220,220,0.8)",
			highlightFill: "rgba(220,220,220,0.75)",
			highlightStroke: "rgba(220,220,220,1)",
			data : [1,2,3,4,5,6,5,4,3,2,1,5]
		},
		{
			label: "Werte2",
			fillColor: "rgba(151,187,205,0.5)",
			strokeColor: "rgba(151,187,205,0.8)",
			highlightFill: "rgba(151,187,205,0.75)",
			highlightStroke: "rgba(151,187,205,1)",
			data : [6,3,6,3,2,4,2,4,5,1,5,1]
		}
		]
}

Nun hab ich die eigene Werte für Label und Data in einer Variable stehen, weiß aber nicht, wie ich die Werte jetzt korrekt in das Array einbaue. Die Werte vom Label müssen in Anführungszeichen stehen. Die Werte von werte1 und werte2 ohne Anführungszeichen.


var labels = '"Mar","Feb","Jan"';
var werte1 = '1,2,3';
var werte2 = '6,5,4';
var data = {
	labels : [labels],
	datasets : [
		{
			label: "Werte1",
			fillColor: "rgba(220,220,220,0.5)",
			strokeColor: "rgba(220,220,220,0.8)",
			highlightFill: "rgba(220,220,220,0.75)",
			highlightStroke: "rgba(220,220,220,1)",
			data : [werte1]
		},
		{
			label: "Werte2",
			fillColor: "rgba(151,187,205,0.5)",
			strokeColor: "rgba(151,187,205,0.8)",
			highlightFill: "rgba(151,187,205,0.75)",
			highlightStroke: "rgba(151,187,205,1)",
			data : [werte2]
		}
	]
}

  1. Hakuna matata!

    Die Werte vom Label müssen in Anführungszeichen stehen.

    So ist das mit Strings.

    Die Werte von werte1 und werte2 ohne Anführungszeichen.

    So ist das mit Zahlen.

    
    
    > var labels = '"Mar","Feb","Jan"';
    > 
    
    

    An dieser Stelle speicherst du einen String anstatt eines Arrays in der Variablen. Das willst du aber gar nicht, du willst eine Array von Strings haben: var labels = ['Mar','Feb','Jan']

    
    
    > 	labels : [labels],
    > 
    
    

    Sinngemäß steht da bis jetzt: labels: ['"Mar","Feb","Jan"'];

    Das ist also ein Array, das genau einen String enthählt. Du willst aber ein Array mit drei Strings haben. Wenn du die Zuweisung so änderst, wie von mir vorgeschlagen, dann musst du diese Zeile ändern in: labels : labels,

    Den Fall mit den Zahlen kannst du analog behandeln.

    Du solltest dich mal mit den Typen von Variablen beschäftigen.

    --
    “All right, then, I'll go to hell.” – Huck Finn
    1. Hallo,

      ich denke, ich habe es Dank Deiner Hilfe hinbekommen. Ich habe den String z.B. var labels = '"Mar","Feb","Jan"'; mittels alabels = labels.split(","); in einen Array umgewandelt und dieses dann korrekt zuweisen können. labels : alabels

      Lieben Dank.

      1. Hakuna matata!

        ich denke, ich habe es Dank Deiner Hilfe hinbekommen. Ich habe den String z.B. var labels = '"Mar","Feb","Jan"'; mittels alabels = labels.split(","); in einen Array umgewandelt

        Wieso notierst du die Einträge denn erst als String, um sie dann in ein Array zu konvertieren? Wieso arbeitest du nicht gleich mit einem Array? Kann es sein, dass der Variableninhalt in deinem echten Code gar nicht hartcodiert wird, sondern dynamisch aus irgendeiner Quelle befüllt wird?

        String.prototype.split() ist nur eine notdürftige Lösung, sobald einer der Einträge ein Komma enthält, fliegt dir alles um die Ohren.

        --
        “All right, then, I'll go to hell.” – Huck Finn
        1. Wieso notierst du die Einträge denn erst als String, um sie dann in ein Array zu konvertieren? Wieso arbeitest du nicht gleich mit einem Array? Kann es sein, dass der Variableninhalt in deinem echten Code gar nicht hartcodiert wird, sondern dynamisch aus irgendeiner Quelle befüllt wird?

          Den String erhalte ich als Ergebnis eines Ajax-Requests. Ist also dynamisch.

          String.prototype.split() ist nur eine notdürftige Lösung, sobald einer der Einträge ein Komma enthält, fliegt dir alles um die Ohren.

          Da ich für die Erstellung der Strings verantwortlich bin, sollte ich ausschließen können, dass ein Komma in einem der Einträge auftaucht. Da labels nur die Monatskürzel enthält und werte1 nur absolute Zahlen, sollte kein Komma zu befürchten sein.

          Stephan

  2. Hallo Leute,

    Die Werte vom Label müssen in Anführungszeichen stehen. Die Werte von werte1 und werte2 ohne Anführungszeichen.

    var labels = '"Mar","Feb","Jan"'; var werte1 = '1,2,3'; var werte2 = '6,5,4';

    Das sieht nach einem möchte-gerne-ein-Array-sein aus. Ab damit in Deine schöne Datenstruktur und schon sind die Einzelwerte direkt adressierbar. Obwohl: Schön ist Deine Datenstruktur nun auch wieder nicht.

    MfG