[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: 201

7. Okt 2019, 23:15
Beitrag # 1 von 9
Bewertung:
(316 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: 2386

8. Okt 2019, 07:25
Beitrag # 2 von 9
Beitrag ID: #572106
Bewertung:
(302 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
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING


als Antwort auf: [#572103]

Abfrage Array aus Variablen

MarioF
Beiträge gesamt: 201

8. Okt 2019, 09:41
Beitrag # 3 von 9
Beitrag ID: #572109
Bewertung:
(283 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: 2386

8. Okt 2019, 09:59
Beitrag # 4 von 9
Beitrag ID: #572110
Bewertung:
(274 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
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING


als Antwort auf: [#572109]

Abfrage Array aus Variablen

MarioF
Beiträge gesamt: 201

8. Okt 2019, 10:14
Beitrag # 5 von 9
Beitrag ID: #572111
Bewertung:
(271 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: 2386

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


als Antwort auf: [#572111]

Abfrage Array aus Variablen

MarioF
Beiträge gesamt: 201

8. Okt 2019, 10:23
Beitrag # 7 von 9
Beitrag ID: #572113
Bewertung:
(268 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: 2386

8. Okt 2019, 15:46
Beitrag # 8 von 9
Beitrag ID: #572119
Bewertung:
(221 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
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING


als Antwort auf: [#572111]

Abfrage Array aus Variablen

WernerPerplies
Beiträge gesamt: 2386

9. Okt 2019, 15:35
Beitrag # 9 von 9
Beitrag ID: #572140
Bewertung:
(139 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
neu: WpsProjectHandler 15.06.2018, Version 1.75, neue Funktionen
Aktuelles
XING


als Antwort auf: [#572103]
X
Hier Klicken

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.10.2019 - 22.10.2019

München
Montag, 21. Okt. 2019, 09.30 Uhr - Dienstag, 22. Okt. 2019, 17.30 Uhr

Schulung, Seminar

Wer hochwertige und farbechte Ergebnisse im Digitaldruck erzielen will, der braucht umfassende Colormanagemement- und PDF-Kenntnisse. Selbst wenn die Maschine kalibriert und das Rip richtig konfiguriert ist, lassen die Ergebnisse oft zu wünschen übrig. Der Grund hierfür liegt zu 90 % in den Daten und in falsch eingestellten Anwendungsprogrammen, auch in falschen Einstellungen im Druckmenü.

Nein

Organisator: Cleverprinting.de

https://www.cleverprinting.de/zweitaegige-weiterbildung-zum-digitaldruck-operator/

Zweitägige Weiterbildung zum Digitaldruck-Operator
Veranstaltungen
21.10.2019 - 23.10.2019

Riga, die Hauptstadt Lettlands
Montag, 21. Okt. 2019, 09.32 Uhr - Mittwoch, 23. Okt. 2019, 09.33 Uhr

VIP-Event

Jedes Jahr haben Sie die Möglichkeit, beim VIP-Event mehr über die Produkte von axaio software, callas software und andere Lösungen zu erfahren, die Four Pees anbietet.

Diejenigen, die uns bereits kennen, wissen, dass wir gerne Business mit Genuss kombinieren. Wir sind schon sehr gespannt und wollen Ihnen deshalb gern einen Blick hinter die Kulissen gewähren ...

Die Stadt der gotischen Türme
Das diesjährige Ziel ist Riga, die Hauptstadt Lettlands. Die gotischen Türme, die das Stadtbild Rigas dominieren, haben den Anschein von Strenge, aber das trifft nicht zu. Diese pulsierende, kosmopolitische Stadt ist die größte der drei baltischen Hauptstädte und beherbergt einige Szenebars und experimentelle Restaurants. Das klingt doch nach einem perfekten Rahmen für unser nächstes VIP-Event, oder?

Nein

Organisator: callas

https://www.callassoftware.com/de/events/2019/10/vip-event-riga

Sind Sie für das nächste VIP-Event bereit?