2016-11-15 2 views
0

lässt sagen, ich habe ein Objekt, das so aussieht.Objektwerte invertieren Javascript

Das Objekt wird im Rahmen einiger Daten generiert, die eine d3.js-Visualisierung steuern. Das Objekt gibt die Verbindung zwischen zwei Datensätzen in einem anderen Objekt an.

Ich habe einen Filter in meiner Visualisierung, der die Daten so anzeigt, als ob sie von einer anderen Quelle kämen, also müssen die Verbindungsdaten grundsätzlich invertiert werden. Quellen werden Ziele und Ziele Quellen werden so würde es so aussehen müssen,

{ 
    source : 0, 
    target : 1 
} 

Gibt es einen besseren Weg, dann zu tun, meine Aufgabe Schleifen und auf jeder interation die Quelle und das Ziel bekommen sie in Variablen speichern und dann sie neu zuweisen?

+1

Sie meinen, so etwas wie dies, temp = a; a = b; b = Temp; Wenn ja, dann ist dies die einzige Möglichkeit, die Sie Werte austauschen können – GraveyardQueen

+0

http://stackoverflow.com/questions/23013573/swap-key-with-value-json betrachten Sie dies. –

+0

d3 erlaubt es Ihnen nicht, einen zusätzlichen Übersetzungsschritt hinzuzufügen, wo Sie diese Konvertierung durchführen könnten? Gibt es eine Chance, dass Sie mehr darüber erfahren könnten, wie und wo Sie die Daten manipulieren und wo Sie die aktuelle Transformation/Übersetzung vornehmen? – Icepickle

Antwort

0

Sie könnten die Schlüssel erhalten und die Werte mit Hilfe einer Temp-Variable tauschen.

var object = { source: 1, target: 0 }, 
 
    temp, 
 
    keys = Object.keys(object); 
 

 
temp = object[keys[0]]; 
 
object[keys[0]] = object[keys[1]]; 
 
object[keys[1]] = temp; 
 

 
console.log(object);

ES6 mit Destrukturierung

var object = { source: 1, target: 0 }, 
 
    keys = Object.keys(object); 
 

 
[object[keys[0]], object[keys[1]]] = [object[keys[1]], object[keys[0]]]; 
 

 
console.log(object);