NEWS
[gelöst] JSON nach Attribute sortieren
-
Nabend,
morgiges Projekt soll sein ein JSON nach Attribute zu sortieren.
Das JSON hat 2 Attribute und sieht so aus:[ { "text": "Maschine1", "value": "63983" }, { "text": "Knotenpunkt4", "value": "63364" } ]Der Inhalt sollte ja egal sein und ich hab das Teil mal gekürtzt weil es mehr als 30 {Werte} sind:
Ich würde gerne dieses JSON nach dem Attribute "text" aufsteigend sortieren.
Kann man das per Blockly lösen oder bedarf es da einer JS-Funktion ?
-
Nabend,
morgiges Projekt soll sein ein JSON nach Attribute zu sortieren.
Das JSON hat 2 Attribute und sieht so aus:[ { "text": "Maschine1", "value": "63983" }, { "text": "Knotenpunkt4", "value": "63364" } ]Der Inhalt sollte ja egal sein und ich hab das Teil mal gekürtzt weil es mehr als 30 {Werte} sind:
Ich würde gerne dieses JSON nach dem Attribute "text" aufsteigend sortieren.
Kann man das per Blockly lösen oder bedarf es da einer JS-Funktion ?
-
-
Nabend,
morgiges Projekt soll sein ein JSON nach Attribute zu sortieren.
Das JSON hat 2 Attribute und sieht so aus:[ { "text": "Maschine1", "value": "63983" }, { "text": "Knotenpunkt4", "value": "63364" } ]Der Inhalt sollte ja egal sein und ich hab das Teil mal gekürtzt weil es mehr als 30 {Werte} sind:
Ich würde gerne dieses JSON nach dem Attribute "text" aufsteigend sortieren.
Kann man das per Blockly lösen oder bedarf es da einer JS-Funktion ?
Eingangs eine kleine Korrektur
Json ist nur die textuelle Darstellung eines JavaScript Objektes.
Du hast als Beispiel ein Array of objects.Leider ohne blockly, aber evtl kann jemand daraus ein blockly machen.
An die Funktion wird das Array übergeben und als Schlüssel der Name des Attributs nachdem sortiert werden soll.function sortByKey(array, key) { return array.sort(function(a, b) { var x = a[key]; var y = b[key]; return ((x < y) ? -1 : ((x > y) ? 1 : 0)); }); }Die Funktion müsste mit allen primitiven Datentypen zurechtkommen.
Bei strings wird nur alphanumerisch und nicht lexikalisch sortiert -
Eingangs eine kleine Korrektur
Json ist nur die textuelle Darstellung eines JavaScript Objektes.
Du hast als Beispiel ein Array of objects.Leider ohne blockly, aber evtl kann jemand daraus ein blockly machen.
An die Funktion wird das Array übergeben und als Schlüssel der Name des Attributs nachdem sortiert werden soll.function sortByKey(array, key) { return array.sort(function(a, b) { var x = a[key]; var y = b[key]; return ((x < y) ? -1 : ((x > y) ? 1 : 0)); }); }Die Funktion müsste mit allen primitiven Datentypen zurechtkommen.
Bei strings wird nur alphanumerisch und nicht lexikalisch sortiert -
@mickym
Ja mit einer zusätzlichen Bibliothek.
Ich bevorzuge meist erstmal cleane Lösungen.
Erst wenn es vom Aufwand keinen Sinn mehr macht, dann hol ich mir eine Bibliothek. Bei npm gibt es Bibliotheken mit 10 Zeilen. Das macht meist kein Sinn.
Er kann ja selbst wählen.
Ich hab dafür kein blockly -
@mickym
Ja mit einer zusätzlichen Bibliothek.
Ich bevorzuge meist erstmal cleane Lösungen.
Erst wenn es vom Aufwand keinen Sinn mehr macht, dann hol ich mir eine Bibliothek. Bei npm gibt es Bibliotheken mit 10 Zeilen. Das macht meist kein Sinn.
Er kann ja selbst wählen.
Ich hab dafür kein blockly -
@oliverio Ja im Prinzip geb ich Dir Recht, aber JSONATA ist Bestandteil von Blockly. Dafür muss man nichts installieren.
-
@oliverio sagte in JSON nach Attribute sortieren:
@mickym
Ah ist mir entgangen.
Ist das neu?seit Version 4.4.3 des JS Adapters - also seit 3.3.2020 ;)

Habs gefunden:

-
Hab gerade mal geschaut, was das Blockly für einen JS Code erzeugt:

Im Prinzip scheint
jsonataExpression(Array,'$^(text)')das zu langen. Der 1. Parameter ist das Objekt bzw. Array und der 2. Parameter der JSONATA Ausdruck.

