[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Abfrage Array aus Variablen

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

Abfrage Array aus Variablen

MarioF
Beiträge gesamt: 355

7. Okt 2019, 23:15
Beitrag # 1 von 9
Bewertung:
(6997 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin,
ich bin immer noch bei Arrays bei ;-)
Über Berechnungen erstelle ich mir eine neue Array. Wenn ich die Werte über
_Liste1[1]
abfrage, wird mir der zweite Eintrag angezeigt.
Möchte ich die Werte über for abfragen, bekomme ich Probleme. Hier mal ein einfaches Beispiel:
Code
var _Liste1 = [ 
["Wert 1", 'Irgendwas mit 1', "Und das zu 1"],
["Wert 2", "Irgendwas mit 2", "Und das zu 2"],
["Wert 3", "Irgendwas mit 3", "Und das zu 3"],
]

var _Liste1Array = [];
var _Liste1Array2 = [];
var _Array = [];

for (var f = 0; f < _Liste1.length; f++) {
_Array = '##' + (50 + f) + ',' + _Liste1[f][2] + 'Ende'
_Liste1Array.push(_Array)
}

for (var x = 0; x < _Liste1Array.length; x++) {

_Liste1Array2.push(_Liste1Array[x][1])
}

alert(_Liste1Array2.join('\n'))

Eigentlich müsste _Liste1Array2.join ja, 50,51,52 anzeigen. Ich bekomme aber nur die zweite # aus jeder Zeile angezeigt.
Zum Test habe ich _Liste1 angelegt, da wird mir richtig der zweite Teil also 'Irgendwas mit 1'... angezeigt.
Bin etwas verwirrt und weiß nicht wirklich, wonach ich suchen soll. Könnt ihr helfen?
---
Viele Grüße
Mario
X

Abfrage Array aus Variablen

WernerPerplies
Beiträge gesamt: 2681

8. Okt 2019, 07:25
Beitrag # 2 von 9
Beitrag ID: #572106
Bewertung:
(6983 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin Mario,

Code
// Hier definierst Du eine Reihe von globalen Variablen: 
var _Liste1 = [
["Wert 1", 'Irgendwas mit 1', "Und das zu 1"],
["Wert 2", "Irgendwas mit 2", "Und das zu 2"],
["Wert 3", "Irgendwas mit 3", "Und das zu 3"],
]

var _Liste1Array = [];
var _Liste1Array2 = [];
var _Array = [];

for (var f = 0; f < _Liste1.length; f++) {
// Dies ist kein Array, sondern ein String
_Array = '##' + (50 + f) + ',' + _Liste1[f][2] + 'Ende'
// dieses Array enthält je Element einen String!
_Liste1Array.push(_Array)
}

for (var x = 0; x < _Liste1Array.length; x++) {
// und hier machst Du etwas ganz Raffiniertes:
// jeder String ist eigentlich auch ein Array mit string.length Elementen
// deshalb fügst Du hier das zweite Zeichen des Strings ("#") Deinem Array hinzu
_Liste1Array2.push(_Liste1Array[x][1])
}
// Dies führt zu diesem Ergebnis:
/*
---------------------------
Skriptwarnung
---------------------------
#
#
#
---------------------------
OK
---------------------------
*/
alert(_Liste1Array2.join('\n'));

Alles klar?

Meine Version sähe so aus:
Code
// Schreibweise Variablen und Funktionen CamelCase,  
// Objektnamen mit Großbuchstaben beginnend, Vaiablenname mit Kleinbuchstaben beginnend

// var _Liste1 = .... definiert eine globale Variable
// besser:
alert(main());
//Ergebnis:
/*
---------------------------
Skriptwarnung
---------------------------
##50,Und das zu 1Ende
##51,Und das zu 2Ende
##52,Und das zu 3Ende
---------------------------
OK
---------------------------
*/

/*String*/function main(){
try { // falls mal etwas schiefgeht
// hier werden lokale Variablen für die Funktion main definiert
var /*Array*/liste1 = [
["Wert 1", 'Irgendwas mit 1', "Und das zu 1"],
["Wert 2", "Irgendwas mit 2", "Und das zu 2"],
["Wert 3", "Irgendwas mit 3", "Und das zu 3"],
],
/*Array*/liste1Array = [],
/*Int*/l = -1;
// da hier für jeden Durchlauf die Arraylänge neu berechnet wird,
// for (var i = 0; i < liste1.length; f++) {
// besser so:
l = liste1.length;
for (var i = 0; i < l; i++) {
liste1Array.push("##" + ((50 + i).toString()) + "," + liste1[i][2] + "Ende");
}
// hier ist alles gut gegangen
return liste1Array.join('\n');
}
catch (error){
alert(error.message + "\nFehlernummer: " + error.number.toString() + "\nin Zeile: " +error.line.toString());
}
return error.message + "\nFehlernummer: " + error.number.toString() + "\nin Zeile: " +error.line.toString();
}


Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign Alle neuen Skripte mit
neu: WpsProjectHandler 31.05.2020, Version 3.XX, neue Funktionen.
MultiSave ist Bestandteil meines WpsProjecthandlers
neu: WpsEanInTables, WpsSaRInHyperlinks
Kundenstimmen


als Antwort auf: [#572103]

Abfrage Array aus Variablen

MarioF
Beiträge gesamt: 355

8. Okt 2019, 09:41
Beitrag # 3 von 9
Beitrag ID: #572109
Bewertung:
(6964 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin Werner,
so ganz verstehe ich noch nicht, was da passiert, aber das muss ich mal in Ruhe durchspielen.
Code
for (var i = 0; i < l; i++) {  
liste1Array.push("##" + ((50 + i).toString()) + "," + liste1[i][2] + "Ende");
}

Aber wie komme ich an ((50 + i).toString()) ran?
---
Viele Grüße
Mario


als Antwort auf: [#572106]

Abfrage Array aus Variablen

WernerPerplies
Beiträge gesamt: 2681

8. Okt 2019, 09:59
Beitrag # 4 von 9
Beitrag ID: #572110
Bewertung:
(6955 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin Mario,
Zitat so ganz verstehe ich noch nicht, was da passiert, aber das muss ich mal in Ruhe durchspielen.

Ja, am Besten im Einzelschrittverfahren und/oder mit Breakpoints.
Zitat Aber wie komme ich an ((50 + i).toString()) ran?

Diese Frage verstehe ich nicht so richtig, die 50 kommen von Dir, i ist Schleifenvariable, 50+i ist die Summe aus 50 und Inhalt der Schleifenvariable, (50+1).toString() wandelt die Summe in einen String um.

toString() wirst Du hier relativ selten finden, weil JavaScript dies Umwandlung automatisch macht, wenn möglich.

Aaaber automatisch ist nicht immer gut, deswegen kann eine gezielte Umwandlung durchaus nützlich sein.

Neuere Versionen von JavaScript kennen typisierte Variablen und dann würde eine Ausdruck "Anton" + /*Typisierte Integer*/50 + /*Typisierte Integer*/i + "Ende" einen Fehler werfen.

Datentypen spielen auch in der hier benutzen JavaScript-Version duraus eine Rolle beim Vergleich:

Probier das mal:

null == undefined -> ist true
null === undefined -> ist false

1 == "1" -> true
1 === "1" -> false

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign Alle neuen Skripte mit
neu: WpsProjectHandler 31.05.2020, Version 3.XX, neue Funktionen.
MultiSave ist Bestandteil meines WpsProjecthandlers
neu: WpsEanInTables, WpsSaRInHyperlinks
Kundenstimmen


als Antwort auf: [#572109]

Abfrage Array aus Variablen

MarioF
Beiträge gesamt: 355

8. Okt 2019, 10:14
Beitrag # 5 von 9
Beitrag ID: #572111
Bewertung:
(6952 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat Diese Frage verstehe ich nicht so richtig, die 50 kommen von Dir, i ist Schleifenvariable, 50+i ist die Summe aus 50 und Inhalt der Schleifenvariable, (50+1).toString() wandelt die Summe in einen String um.

Verkehrt ausgedrückt ;-). Zum Hintergrund:
Ich möchte einen Kalender erstellen. Dazu sollen die Feiertage dem jeweiligen Tag zugeordnet werden. Ich habe eine Schleife, die einfach ab 1.1 die Tage hoch zählt.
Darin ist eine if-Anweisung, die sagt, wenn du zu dem Datum einen Eintrag in der Array-Feiertage findest, dann gebe den entsprechenden Feiertag aus. Zur Abfrage den Datum müsste ich an das Datum in der Array-Feiertage kommen. Steh dort ein Datum in der Form "1.01" drin, ordnet er den Feiertag auch dem richtigen Datum in der Schleife zu. So bald aber das Datum über eine Formel erstellt wird, findet er dies nicht.
Ich hier mal hier mal die Datei ran vom dem, was ich mir da zusammengeschustert habe. Vielleicht wird es klarer, was ich möchte.
---
Viele Grüße
Mario


als Antwort auf: [#572110]
Anhang:
kalender.jsx (7.20 KB)

Abfrage Array aus Variablen

WernerPerplies
Beiträge gesamt: 2681

8. Okt 2019, 10:19
Beitrag # 6 von 9
Beitrag ID: #572112
Bewertung:
(6951 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Mario,

das muss ich jetzt erstmal sacken lassen, ich melde mich.

Kennst Du eigentlich
WpsCalendar – Automatische Kalendererzeugung auf Knopfdruck mit Adobe InDesign
und
WpsInsertDates – Skript zum Einfügen von berechneten Daten in Adobe InDesign Dateien

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign Alle neuen Skripte mit
neu: WpsProjectHandler 31.05.2020, Version 3.XX, neue Funktionen.
MultiSave ist Bestandteil meines WpsProjecthandlers
neu: WpsEanInTables, WpsSaRInHyperlinks
Kundenstimmen


als Antwort auf: [#572111]

Abfrage Array aus Variablen

MarioF
Beiträge gesamt: 355

8. Okt 2019, 10:23
Beitrag # 7 von 9
Beitrag ID: #572113
Bewertung:
(6949 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin,
ja, kenne ich.
Aber um die ganze Materie zu verstehen, habe ich mir das als learn by doing raus gesucht.
---
Viele Grüße
Mario


als Antwort auf: [#572112]

Abfrage Array aus Variablen

WernerPerplies
Beiträge gesamt: 2681

8. Okt 2019, 15:46
Beitrag # 8 von 9
Beitrag ID: #572119
Bewertung:
(6902 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
nochmal moin,
Zitat Zur Abfrage den Datum müsste ich an das Datum in der Array-Feiertage kommen. Steh dort ein Datum in der Form "1.01" drin, ordnet er den Feiertag auch dem richtigen Datum in der Schleife zu. So bald aber das Datum über eine Formel erstellt wird, findet er dies nicht.


Ok, dieses Problem ist klar, ein Datum wird in Millisekunden gespeichert, da wird ein Vergleich selten klappen.

Versuch mal Folgendes:

(new Date()) == (new Date());

Du musst das Datum zuvor umwandeln:

Das sollte mit dieser Funktion klappen:

Code
alert(compareDate(new Date(), new Date())); 

/*Boolean*/function compareDate(/*Date*/date1, /*Date*/date2){
return (date1.getFullYear().toString()+date1.getMonth().toString()+date1.getDate().toString() ==
date2.getFullYear().toString()+date2.getMonth().toString()+date2.getDate().toString());
}


Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign Alle neuen Skripte mit
neu: WpsProjectHandler 31.05.2020, Version 3.XX, neue Funktionen.
MultiSave ist Bestandteil meines WpsProjecthandlers
neu: WpsEanInTables, WpsSaRInHyperlinks
Kundenstimmen


als Antwort auf: [#572111]

Abfrage Array aus Variablen

WernerPerplies
Beiträge gesamt: 2681

9. Okt 2019, 15:35
Beitrag # 9 von 9
Beitrag ID: #572140
Bewertung:
(6820 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Mario,

Du hattest mir ja per Mail mitgeteilt, dass jetzt alles klappt.
Das freut mich.

Für alle, die nach einer ähnlichen Lösung suchen, gibt es hier ein Skript von mir:

wpsGetACalendar - Kalenderobjekt erzeugen

Dieses Skript kann per Include in ein eigenes Skript eingebunden werden und stellt nach Aufruf die Kalenderdaten eines beliebigen Jahres in einem Objekt zu Verfügung.

Aufruf:
var calendar = WpsGetACalendar(/*Int*/2021) // Jahr;

Einen schönen Tag wünscht

Werner Perplies
Auftragsprogrammierung und Skripte für Adobe InDesign Alle neuen Skripte mit
neu: WpsProjectHandler 31.05.2020, Version 3.XX, neue Funktionen.
MultiSave ist Bestandteil meines WpsProjecthandlers
neu: WpsEanInTables, WpsSaRInHyperlinks
Kundenstimmen


als Antwort auf: [#572103]
X

Aktuell

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
21.06.2022

Online
Dienstag, 21. Juni 2022, 10.00 - 10.30 Uhr

Webinar

Viele Druckereien – kleine und große – suchen heute nach Wegen, ihre Effizienz und Produktivität zu steigern. Dabei erkennen sie oft, dass sie sich dringend um die Optimierung, Standardisierung und Automatisierung ihrer Workflows und Prozesse kümmern sollten. In unserer kostenlosen, jeweils ca. 30 minütigen Webinar-Reihe erfahren Sie, wie Sie die Effizienz- und Produktivitätspotenziale Ihrer Druckerei erschließen können – und wie einfach und kostengünstig das sein kann.

kostenlose 3-teilige Webinar-Reihe, 21., 23. und 26. Juni 2022, jeweils 10:00 - 10:30

Ja

Organisator: Impressed GmbH

Kontaktinformation: Silvia Noack, E-Mailsnoack AT impressed DOT de

https://impressed-workflow-server.de/impressed-webinar-reihe-the-big-picture/

Impressed Webinar-Reihe THE BIG PICTURE
Veranstaltungen
02.02.2023

Prozesse optimieren und effizient gestalten

Zürich
Donnerstag, 02. Feb. 2023, 08.00 - 10.00 Uhr

Digitalisierung, Webauftritt

Digitalisierung mitgestalten - Worauf kommt es an? Wie wichtig ist die Webseite? Webseite mit Word Press? Interne Prozesse optimieren

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: Birol Isik, E-Mailinfo AT bkcc DOT ch

https://digitalisierung-heute.ch/digitalisierung-informationstag-schweiz/