2016-04-03 3 views
0

Obwohl das Thema der Konvertierung von JS-Objekten in JS-Arrays hier schon lange behandelt wurde, ist meine Frage über Algorithmus-Optimierung.VOLLSTÄNDIGE Konvertierung des Objekts in ein Array von Schlüsseln und Werten: bessere Lösung?

mein Objekt sein Lassen

myObject = { 
     "key q": "value q", 
     "key p": "value p", 
     "key g": "value g" }; 

in eine JS-Array umgewandelt werden, beiden Tasten auch Werte und. Bisher habe ich dies ausgedacht:

var myArr = []; 
var aString = JSON.stringify(myObject); 
aString = aString.substring (1, (aString.length-1)); // let's get rid of the braces 
myArr = aString.replace (/\:/gi, ','); 

Es funktioniert alles reibungslos, aber gibt es etwas schnellen Weg, um diese (angeblich) langsam String-Methoden als unterziehen?

+0

wie sollte nach dem Array aus? –

+0

[Es gibt kein "JSON-Objekt"] (http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/) – Andreas

+0

Mögliches Duplikat von [a better Möglichkeit, JS-Objekt in Array zu konvertieren] (http://stackoverflow.com/questions/6857468/a-better-way-to-convert-js-object-to-array) – Andreas

Antwort

1

Sie suchen also nach einer Möglichkeit, Schlüssel und Werte in einem Array zusammenzufassen?

myObject = { 
 
     "key q": "value q, comma, more", 
 
     "key p": "value p", 
 
     "key g": "value g" }; 
 

 

 
myArr = []; 
 
Object.keys(myObject).forEach(function(k) { 
 
    myArr.push(k, myObject[k]) 
 
}); 
 

 
document.write('<pre>'+JSON.stringify(myArr,0,3));

Und bitte versuchen nie eine JSON-Struktur mit String-Funktionen zu ändern. Das ist nicht "langsam", es ist einfach falsch!

+0

Das ist nicht JSON : [Es gibt kein "JSON-Objekt"] (http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/) – Andreas

+0

@georg - Warum? plain wrong '? Sehen Sie sich https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify für dieses Beispiel an: var foo = {foundation: "Mozilla" , Modell: "Box", Woche: 45, Transport: "Auto", Monat: 7; var jsonString = JSON.stringify (foo, Ersetzer); –

+0

@BriceCoustillas: 'JSON.stringify (... replacer)' ist in Ordnung, 'someJsonString.replace (...)' ist falsch - nur weil 'String.replace' keine Ahnung von der json-Syntax hat. – georg

0

Wenn Sie ein Fan von reduce sind:

function clump(o) { 
    return Object.keys(o).reduce((result, k) => result.concat(k, o[k]), []); 
} 
Verwandte Themen