Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign Skriptwerkstatt » Ausgabe Array

Ausgabe Array

MarioF
Beiträge gesamt: 390

5. Okt 2019, 17:22
Bewertung:

gelesen: 2376

Beitrag als Lesezeichen
Hallo,
ich habe eine einfache Array:
Code
var Liste = new Array(); 
Liste['A'] = 'Ein Wert für A',
Liste['B'] = 'Ein Wert für B',
Liste['C'] = 'Ein Wert für C',
...


Wenn ich jetzt Teile davon ausgeben möchte, geht es ja z.B. so
Code
ausgabe = Liste['A'] + ', ' + Liste['C']] 

Kann man die Ausgabe etwas abkürzen, damit man nicht immer Liste['A'] usw. schreiben muss?
---
Viele Grüße
Mario

Ausgabe Array

WernerPerplies
Beiträge gesamt: 2760

5. Okt 2019, 17:42
Bewertung: |||

gelesen: 2372

Beitrag als Lesezeichen
Moin,

alle Elemente eines Arrays mit Komma-Delimiter gehen so:

Code
var ausgabe = Liste.join(",") 


Für Teilbereiche würde ich zuerst einmal ein Teilarray erzeugen

Hier kannst Du sehen, was man so alles mit Arrays machen kann:
Array-Methoden

Die Möglichkeiten hängen aber von der jeweiligen JavaScriptversion ab, also einfach mal probieren.

Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

Ausgabe Array

Martin Fischer
  
Beiträge gesamt: 12779

5. Okt 2019, 18:02
Bewertung: |||

gelesen: 2363

Beitrag als Lesezeichen
Was auch geht ...

Code
var Liste = new Array();  

Liste['A'] = 'Ein Wert für A';
Liste['B'] = 'Ein Wert für B';
Liste['C'] = 'Ein Wert für C';
var arr = new Array();

for (var key in Liste)
arr.push(Liste[key]);

var ausgabe = arr.join(', ')
$.writeln( ausgabe );


Viele Grüße
Martin


Ausgabe Array

MarioF
Beiträge gesamt: 390

5. Okt 2019, 18:09
Bewertung:

gelesen: 2358

Beitrag als Lesezeichen
Vielen Dank für die Antworten.
Ich schaue mir gerade concat(), sieht ganz gut aus ;-) https://www.w3schools.com/...=tryjs_array_concat2
---
Viele Grüße
Mario

Ausgabe Array

MarioF
Beiträge gesamt: 390

5. Okt 2019, 19:32
Bewertung:

gelesen: 2346

Beitrag als Lesezeichen
Ich würde die Frage gern erweitern. Ich habe eine weitere Liste:
Code
var _Array2 = new Array(); 
var _Array3 = new Array();

var _Liste2 = [
["A", "Wert 1","Wert 1_2"],
["B", "Wert 2","Wert 2_2"],
["C", "Wert 3","Wert 3_2"],
["C", "Wert 4","Wert 4_2"],
...

for (var i = 0; i < _Liste2.length; i++) {

if (_Liste2[i][0] == "C") {
for (var c = 0; c < _Liste2.length; c++) {
_Array3[_Liste2[c][2] + _Liste2[c][1]];
}
}

else {

..._Array2

var _txt1 = _Liste2[i][2],
var _txt2 = _Liste2[i][1] + _Liste2[i][2]

_Array2[i] = _txt1
_Array3[i] = _txt2
}
alert(_Array3.join("\n"));


Wenn in _Liste2[0] ein C steht, sollen die Werte [1] und [2] in _Array3 geschrieben werden. Leider erhalte ich aber keine Ausgabe.
---
Viele Grüße
Mario

Ausgabe Array

WernerPerplies
Beiträge gesamt: 2760

6. Okt 2019, 08:38
Bewertung: |||

gelesen: 2291

Beitrag als Lesezeichen
Moin Mario,

ich bin nicht sicher, ob ich Deine Aufgabe richtig verstanden habe, aber versuche es mal so:

Code
main(); 

/*Void*/function main(){
var /*Array*/array3 = [],
/*Array*/liste2 = [
["A", "Wert 1","Wert 1_2"],
["B", "Wert 2","Wert 2_2"],
["C", "Wert 3","Wert 3_2"],
["C", "Wert 4","Wert 4_2"]
// …
],
/*Int*/l = liste2.length, /*Int*/c = -1;

for (var i = 0; i < liste2.length; i++){
if (liste2[i][0] == "C") {
array3.push(liste2[i].splice(1,2).join(""));
}
}
alert(array3.join("\n"));
}


Falls Dein Ergebnisarray sehr groß sein sollte, könntest Du die Sache so etwas schneller machen:

Code
main(); 

/*Void*/function main(){
var /*Int*/n = 1000, /*Int*/l= -1, /*Int*/c = 0, /*int*/size = n,
/*Array*/array3 = [size],
/*Array*/liste2 = [
["A", "Wert 1","Wert 1_2"],
["B", "Wert 2","Wert 2_2"],
["C", "Wert 3","Wert 3_2"],
["C", "Wert 4","Wert 4_2"],
["C", "Wert 5","Wert 5_2"]
// …
];
l = liste2.length;
for (var i = 0; i < l; i++){
if (liste2[i][0] == "C") {
array3[c++] = liste2[i].splice(1,2).join("");
if (c == size){
size = size + n;
array3.length = size;
}
}
}
array3.length = c;
alert(array3.join("\n"));
}


n sollte dabei ungefähr so groß wie das erwartete Ergebnis sein.

Einen schönen Tag wünscht

Werner Perplies
Praxisnahe Skript-Lösungen und Skript-Programmierung für Adobe InDesign
Aktuelles (Stand: 14.02.2024)
Kundenstimmen

Ausgabe Array

MarioF
Beiträge gesamt: 390

6. Okt 2019, 18:05
Bewertung:

gelesen: 2268

Beitrag als Lesezeichen
Vielen Dank...
---
Viele Grüße
Mario