[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Array sortieren

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Array sortieren

WernerPerplies
Beiträge gesamt: 2762

11. Sep 2011, 19:37
Beitrag # 16 von 21
Beitrag ID: #480018
Bewertung:
(2172 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Jan,

ich habe die Funktion der nächsten Zeile nicht weiter untersucht, sie gehört aber auf jeden Fall schon mal vor die Funktion loadAndSortArray(_abs, _textFrame) oder besser an's Ende einer main()-Funktion.

Welcher Fehler wird denn gemeldet?


als Antwort auf: [#480014]
X

Array sortieren

WernerPerplies
Beiträge gesamt: 2762

12. Sep 2011, 07:57
Beitrag # 17 von 21
Beitrag ID: #480027
Bewertung:
(2126 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Tag Gregor,

Du verwendest in dem Script die folgende Routine:

Code
function sort_TextObject_DE (a, b) {  
// ich gehe mal davon aus, dass du deutsche textet sortiert, deswegen wird es etwas umständlicher.
a = removeUmlaut (a);
b = removeUmlaut (b);
if (a ==b) return 0;
if (a > b) return 1;
else return -1;
// Umluate für die Sortierung entfernen
function removeUmlaut (a) {
// hier ist der entscheidende punkt für die sortierfunktion: aus der eigenschaft contents wird der zu sortierende text ermittelt.
a = a.contents.toLowerCase();
a = a.replace(/ä/g,"a");
a = a.replace(/ö/g,"o");
a = a.replace(/ü/g,"u");
a = a.replace(/ß/g,"s");
return a;
}
}


Diese Routine ist m. E. so ein extremer Performancekiller.

Selbst in meinem kleinen Beispielprogramm gäbe es für diese Routine 60 Aufrufe der Funktion removeUmlaut.

Wenn Du ein zweidimensionales Array laden würdest und da für jedes Element die Routine aufrufen würdest, hättest Du genau neun Aufrufe.

Vergrößere jetzt mal die Anzahl der Elemente und schau Dir das Ergebnis an:

Mein Beispielprogramm mit etwas mehr Elementen und einem Zähler:

Code
// Definition eines assoziativen Array als globale Variable 
var gSort = new Array();
gSort.counter = 0;

main();

function main()
{
var array2Sort = [["9", "neun"], ["2", "zwei"], ["4", "vier"],["1", "eins"],
["6", "sechs"], ["8", "acht"], ["0", "null"],["5", "fünf"],["9", "neun"], ["2", "zwei"], ["4", "vier"],["1", "eins"],
["6", "sechs"], ["8", "acht"], ["0", "null"],["5", "fünf"],["9", "neun"], ["2", "zwei"], ["4", "vier"],["1", "eins"]];
var sortedArray = sortArray(array2Sort);
alert(gSort.counter*2);
}
function sortArray(array2Sort)
{
return array2Sort.sort(sortElements);
}
function sortElements(e1, e2)
{
++gSort.counter;
if (e1[0]<e2[0]) return -1;
if (e1[0]>e2[0]) return 1;
return 0;
}



als Antwort auf: [#480008]

Array sortieren

gfellenz
Beiträge gesamt: 121

12. Sep 2011, 08:48
Beitrag # 18 von 21
Beitrag ID: #480030
Bewertung:
(2108 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hey werner,

das ist mir schon klar. ich ordne performance aber in den meisten fällen der einfacheren programmierung unter – sie spielt einfach zu selten eine rolle. das vereinfacht den lernprozess ungemein – ich mache regelmäßig eine vorlesung an der hochschule der medien und mir schon einige gedanken über didaktik gemacht.

ein zweidimensionaler array ist deutlich abstrakter und ich wollte former ersparen den zweidimensionalen array und eine eigene sort-Funktion zu schreiben (die brauchst du ja trotzdem).

wie dem auch sei – es gibt immer verschiedene wege zum ziel.

grüße,
gregor


als Antwort auf: [#480027]

Array sortieren

WernerPerplies
Beiträge gesamt: 2762

12. Sep 2011, 09:01
Beitrag # 19 von 21
Beitrag ID: #480031
Bewertung:
(2099 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gregor,

Zitat das ist mir schon klar. ich ordne performance aber in den meisten fällen der einfacheren programmierung unter


Da stimme ich Dir zu, hier geht es aber nicht um Peanuts. Der Zeitbedarf wird be größeren Arrays enorm.

Zitat und eine eigene sort-Funktion zu schreiben


Das hast Du doch auch:
Deine Routine:
Code
function sort_TextObject_DE (a, b) {  
// ich gehe mal davon aus, dass du deutsche textet sortiert, deswegen wird es etwas umständlicher.
a = removeUmlaut (a);
b = removeUmlaut (b);
if (a ==b) return 0;
if (a > b) return 1;
else return -1;
// Umluate für die Sortierung entfernen
function removeUmlaut (a) {
// hier ist der entscheidende punkt für die sortierfunktion: aus der eigenschaft contents wird der zu sortierende text ermittelt.
a = a.contents.toLowerCase();
a = a.replace(/ä/g,"a");
a = a.replace(/ö/g,"o");
a = a.replace(/ü/g,"u");
a = a.replace(/ß/g,"s");
return a;
}
}

Meine Routine:
Code
function sortElements(e1, e2)   
{
if (e1[0]<e2[0]) return -1;
if (e1[0]>e2[0]) return 1;
return 0;
}


Wenn man mal die Umlautersetzung weglässt, sind die Routinen fast identisch.

Aber lassen wir es mal dabei, jeder Anwender kann jetzt selbst entscheiden, welche Logik für die eigene Anwendung, die geignetere ist.


als Antwort auf: [#480030]

Array sortieren

Martin Fischer
  
Beiträge gesamt: 12783

12. Sep 2011, 09:05
Beitrag # 20 von 21
Beitrag ID: #480032
Bewertung:
(2095 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
In dem Verbesserungsvorschlag von H. Perplies fehlt die geschwindigkeitsoptimierte Routine zum Ignorieren der Groß-/Kleinschreibung beim Sortieren und der Einsortierung von Umlauten beim Vokal.

Mit einem schnellen Skript, das ein fehlerhaftes Ergebnis liefert, ist dem Anwender nicht geholfen.

Man könnte das Fehlende beim Einrichten des ersten Elements des zweidimensionalen Arrays nachholen.

Unter Einbezug von Gregors Funktion etwa so:
Code
var _eintr_text = removeUmlaut(_abs[n].contents); 


Peter Kahrels sortOrder-Liste im Language-aware paragraph sorter zeigt jedoch, dass die Angelegenheit noch weitaus komplexer ist, als hier behandelt.


als Antwort auf: [#480027]
(Dieser Beitrag wurde von Martin Fischer am 12. Sep 2011, 09:08 geändert)

Array sortieren

WernerPerplies
Beiträge gesamt: 2762

12. Sep 2011, 09:10
Beitrag # 21 von 21
Beitrag ID: #480033
Bewertung:
(2085 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

danke für die Ergänzung, das hatte ich stillschweigend vorausgesetzt, weil das Laden des Arrays je nach Sortierziel völlig unterschiedliche Strategien erfordert.

Aber für diese konkrete Anwendung ist Dein Tipp sehr hilfreich.


als Antwort auf: [#480032]
X

Aktuell

Web / SEO / Blockchain / Betriebssystem
300

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
14.05.2024

Online
Dienstag, 14. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Prozessoptimierung ist ein Teamsport! Keine Software und keine Maschine allein kann Ihnen helfen, die Effizienzpotenziale Ihres Betriebes maximal auszuschöpfen. Von der Auftragsannahme über die Vorstufe und den Druck bis hin zur Weiterverarbeitung – alles muss optimal ineinandergreifen. Apropos Weiterverarbeitung – in vielen Druckbetrieben fristet sie in Sachen Prozessoptimierung immer noch ein Schattendasein. Dabei liegen hier mittlerweile die größten Einsparpotenziale! In einem Webinar von Horizon und Impressed erfahren Sie, wie Sie diese Einsparungen realisieren können. Horizon, bekannt für innovative Lösungen in der Druckweiterverarbeitung, bietet mit iCE LiNK eine Workflowlösung für die Weiterverarbeitung. iCE LiNK überwacht, visualisiert und analysiert Produktionsabläufe und unterstützt bei der Wartung – damit immer alles reibungslos läuft. Den gleichen Anspruch hat der von Impressed entwickelte Impressed Workflow Server – er ist die smarte PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt. Im Webinar zeigen Ihnen die Experten von Horizon und Impressed, wie beide Lösungen im Team die Effizienz und Produktivität Ihres Betriebes steigern können. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Ja

Organisator: Impressed / Horizon

https://www.impressed.de/schulung.php?c=sDetail&sid=327

Einsparpotenziale in der Weiterverarbeitung
Veranstaltungen
16.05.2024

Online
Donnerstag, 16. Mai 2024, 10.00 - 10.30 Uhr

Webinar

Komplizierte, kleinteilige Aufträge; alles sehr speziell; seit Jahren bewährte Prozesse – da können wir nichts standardisieren und automatisieren! Das sagen viele Großformatdrucker – aber stimmt das wirklich, ist dem tatsächlich so? Günther Business Solutions und Impressed treten in einem Webinar den Gegenbeweis an. Experten beider Unternehmen zeigen, wie Großformatdrucker vom Einsatz zweier bewährter Lösungen profitieren können: • von advanter print+sign von Günther Business Solutions, dem ERP-System für den Großformatdruck, dass alle Phasen der Wertschöpfung im Large Format Printing abdeckt • von Impressed Workflow Server, der smarten PDF-Workflow-Lösung für Druckereien, die Datenmanagement, Preflight und Produktionssteuerung übernimmt Über die Kombination beider Lösungen können Großformatdrucker ihre Prozesse mit modernen Workflows Schritt für Schritt automatisieren – und so zügig deutliche Zeit- und Kosteneinsparungen realisieren. Das Webinar sollten Sie sich nicht entgehen lassen – damit Sie keine Effizienzpotenziale mehr liegen lassen. Melden Sie sich am besten gleich an, wir freuen uns auf Sie! PS: Melden Sie sich in jedem Fall an – sollten Sie zum Termin verhindert sein, erhalten Sie die Aufzeichnung.

kostenlos

Nein

Organisator: Impressed / Günther Business Solutions

https://www.impressed.de/schulung.php?c=sDetail&sid=326

Und es geht doch: Automatisierung im Großformatdruck!