Connect failed: Connection timed out

[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Objekt-Literal

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

Objekt-Literal

pixxxelschubser
Beiträge gesamt: 1708

13. Dez 2017, 00:02
Beitrag # 1 von 9
Bewertung:
(2560 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo zusammen,
ich „spiele“ gerade ein bisschen mit einem „aus der hohlen Hand“ erzeugtem Objekt-Literal herum.

Beispielcode:
Code
var obj = { 
name1 : "value1",
name2 : "value2",
name3 : "value3"
}

Es ist problemlos möglich, die einzelnen values über ihre keys anzusprechen und auch zu ändern.

Egal ob:
obj['name2'] = "valueNeu";
oder
obj['name'+2] = "valueNeu";
oder
obj.name2 = "valueNeu";

… es gibt genügend Varianten für Aufruf und Neuzuweisung.


Allerdings kann ich keinen einfachen Weg finden, die einzelne keys/namen aufzurufen und zu ändern.

Kann mir hier jemand „unter die Arme greifen“ und mir erklären, wie ich z.B.
obj['name2'] = "value2";
obj['name3'] = "value3";
in
obj['key2'] = "value2";
obj['andererName3'] = "value3";
ändere?

Also im Objekt nur die keys ändere und die Werte beibehalte?

Den einzigen Weg der mir bis jetzt eingefallen ist, empfinde ich eher als einen kruden Workaround --> ein neues Objekt mit neuen keys erstellen und die passenden Werte einfach wieder zuordnen.

Geht das nicht doch direkter?
Vielen Dank im Voraus.
X

Objekt-Literal

Martin Fischer
  
Beiträge gesamt: 12779

13. Dez 2017, 06:58
Beitrag # 2 von 9
Beitrag ID: #561401
Bewertung:
(2545 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans-Jürgen,

versuch's mal so:

Code
var obj = { 
"name1" : "value1",
"name2" : "value2",
"name3" : "value3"
}

obj['key2'] = obj['name2'];
delete obj['name2'];



als Antwort auf: [#561400]
(Dieser Beitrag wurde von Martin Fischer am 13. Dez 2017, 07:38 geändert)

Objekt-Literal

WernerPerplies
Beiträge gesamt: 2760

13. Dez 2017, 08:09
Beitrag # 3 von 9
Beitrag ID: #561403
Bewertung:
(2524 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo pixxxelschubser,

Auf die Schnelle fällt mir nur dies ein (dürfte ziemlich langsam sein):
Code
// DESCRIPTION rename object properity 
// Dateiname: wpsObjectPropertyRename.jsx
// © 2017 by Werner Perplies, EDV-Anwendungsberatung,
// http://www.weepee.de, email: werner.perplies@weepee.de
// [modified]
// created: Wed Dec 13 2017 08:01:30 GMT+0100
// [lastFileProps:({time:"1487325362000", size:3813, checkSum:"262c6114"})]
// [end of header]
// #include "C:/Workspaces/wpsObjectPropertyRename.jsx
Object.prototype.propertyRename = function(oldName,newName)
{
var /*Any*/value = this[oldName];

delete this[oldName];
this[newName] = value;
}

// start only for testing
main();

/*Void*/function main()
{
var /*Void*/o = {name1: "name1", name2:"name2"};

o.propertyRename("name1", "name3");

alert(o.name3);
}
// end only for testing


Ach ja, wofür braucht man so etwas?


als Antwort auf: [#561400]

Objekt-Literal

pixxxelschubser
Beiträge gesamt: 1708

13. Dez 2017, 22:39
Beitrag # 4 von 9
Beitrag ID: #561421
Bewertung:
(2440 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin und Werner,
ich danke euch sehr für eure Antworten. Das ist schon viel mehr als ich überhaupt erwartet hatte. Ich werde eure vorgeschlagenen Lösungen garantiert in den nächsten Tagen durchtesten und euch dann noch einmal ein Feedback geben.

Auf den ersten Blick sehen sowohl Martins Vorschlag für die „einfache“ Umbenennung als als Werners prototype-Funktion sehr vielversprechend aus.


Antwort auf: … Ach ja, wofür braucht man so etwas?

Bisher habe ich das nicht gebraucht. Doch irgendwann ist immer das erste Mal. Bin in ein Thema reingerutscht und die (einfachste) Lösung für das dortige Problem (ohne den Code komplett umzuschreiben) schien mir die Änderung der keys in dem bereits vorhandenen Objekt zu sein. Hat dann auch funktioniert. Wie gesagt mit dem etwas kruden Workaround über ein zweites neu anzulegendes Objekt. Bei Interesse findet ihr das Thema hier:
https://forums.adobe.com/thread/2422300

Danke nochmals und bis demnächst


als Antwort auf: [#561403]
(Dieser Beitrag wurde von pixxxelschubser am 13. Dez 2017, 22:43 geändert)

Objekt-Literal

WernerPerplies
Beiträge gesamt: 2760

14. Dez 2017, 09:26
Beitrag # 5 von 9
Beitrag ID: #561422
Bewertung:
(2403 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin pixxxelschubser,

Zitat Bei Interesse findet ihr das Thema hier:
https://forums.adobe.com/thread/2422300


Wenn ich das richtig verstanden habe, geht es in diesem Beispiel um die Loakalisierung eine Skriptes, und so etwas würde ich nicht im Skript hart codieren, sondern über externe Dateien lösen.

Ein Beispiel für solch eine Lösung findest Du in diesem Skript:

WpsIndFileIdentifier

Ist, wenn man die Problematik allgemeingültig lösen will, ein ziemlicher Aufwand, aber einmal gelöst und eingebaut, kann man ein Skript durch Erzeugung einer externen Meldungsdatei leicht an jede Sparache anpassen.


als Antwort auf: [#561421]

Objekt-Literal

pixxxelschubser
Beiträge gesamt: 1708

14. Dez 2017, 19:24
Beitrag # 6 von 9
Beitrag ID: #561443
Bewertung:
(2354 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Werner,
zuerst dachte ich mir, ich hätte vielleicht den falschen Link gepostet.

Aber nein. Du hast das Thema etwas missverstanden. Es geht nicht um die Lokalisierung sondern vielmehr um eine Art „Ersatz-Grep“ für Illustrator. Das Script soll (basierend auf der Wortgruppen-Liste) einzelne Wörter oder Wortgruppen durch die entsprechenden Ausdrücke in der Sprache Khmer in allen Textrahmen in allen offenen Dokumenten ersetzen.

Das ist auch schon alles. Trotzdem Danke.


als Antwort auf: [#561422]

Objekt-Literal

WernerPerplies
Beiträge gesamt: 2760

14. Dez 2017, 19:47
Beitrag # 7 von 9
Beitrag ID: #561446
Bewertung:
(2352 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo pixxxelschubser,

Zitat zuerst dachte ich mir, ich hätte vielleicht den falschen Link gepostet.

Ok, ich schaue mir das noch einmal an, aber ich denke die Aufgabenstellung ändert nichts am Weg:

Das Objekt als externe Json-Dateien pflegen und je nach Bedarf einlesen und keinesfalls die Eigenschaftsnamen nachträglich ändern.

Das Ändern der Eigenschaftsnamen durch Löschen und neu Erzeugen der Eigenschaften dürfte übrigens zu heftiger Tätigkeit des Garbage Collectors führen.


als Antwort auf: [#561443]

Objekt-Literal

pixxxelschubser
Beiträge gesamt: 1708

14. Dez 2017, 20:31
Beitrag # 8 von 9
Beitrag ID: #561448
Bewertung:
(2346 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: … Das Ändern der Eigenschaftsnamen durch Löschen und neu Erzeugen der Eigenschaften dürfte übrigens zu heftiger Tätigkeit des Garbage Collectors führen.


Da stimme ich dir doch zu 100% zu.

Und vielleicht ist dann gerade deswegen der Weg über ein zweites unabhängiges Objekt (das auf dem ersten basiert) doch nicht ein ganz so „kruder Workaround“ für den ich ihn zuerst gehalten hatte. Immerhin sind beide Objekte in einer Funktion gekapselt und somit dürften sich die Auswirkungen auf den globalen Scope ziemlich in Grenzen halten.

Was man trotzdem nicht nicht vergessen darf: das Ganze war keine Auftragsarbeit. Sondern vielmehr nur eine kleine Gefälligkeit im Rahmen des Forenalltags. Für den TO funktioniert das Teil hinreichend und ich schätze, solange es ihm die aufwendige Handarbeit erleichtert, nimmt eine etwas heftigere Tätigkeit der Garbage Collection sicherlich gerne in Kauf.

Und mich selbst hat zu diesem Thema hier auch nur der Aspekt der eigenen Wissenserweiterung verleitet.


als Antwort auf: [#561446]

Objekt-Literal

WernerPerplies
Beiträge gesamt: 2760

15. Dez 2017, 07:54
Beitrag # 9 von 9
Beitrag ID: #561451
Bewertung:
(2299 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin pixxxelschubser,

Zitat Was man trotzdem nicht nicht vergessen darf: das Ganze war keine Auftragsarbeit. Sondern vielmehr nur eine kleine Gefälligkeit im Rahmen des Forenalltags. Für den TO funktioniert das Teil hinreichend und ich schätze, solange es ihm die aufwendige Handarbeit erleichtert, nimmt eine etwas heftigere Tätigkeit der Garbage Collection sicherlich gerne in Kauf.

Klar, wobei es in dem Skript noch weiteres Potential zur Verbesserung der Geschwindigkeit gäbe.

Noch ein Hinweis zum Thema externe Datendatei:

Der Einsatz eines leistungsfähigen JSON-Parsers löst natürlich ganz nebenbei auch das Escape-Problem (\n & Co) in dem Skript.


als Antwort auf: [#561448]
X