2016-09-22 2 views
0

Also habe ich eine Zeichenfolge eingerichtet wie this. Das ist ein JSON-String, Daten in diesem Format zu speichern:Gibt es eine Möglichkeit für mich, ein JSON-Array mithilfe von Regex rückwärts zu suchen?

{ 
    "players": { 
     <playerID>: { 
      "presets": [{ 
       "title": <title>, 
       "presetId": <id>, 
       "preset": {<presetData>}, 
       "votes": <voteCount>, 
       "date": <creationDate> 
      }] 
     } 
} 

Ich mag Eingabe in der Lage sein, ein presetId und ein playerId als Ausgabe zu erhalten (im Grunde herausfinden, welchen Spieler das Preset mit dieser ID hat). Dasselbe kann erreicht werden, indem man jeden Spieler und die Presets jedes Spielers durchläuft und sieht, ob das Preset die richtige ID hat, aber ich muss das sehr oft machen, und ich denke, das wäre ziemlich teuer. Würde Regex besser sein? Welche Art von Ausdruck würde ich verwenden?

+5

Regex wäre fast sicher schlechter. – Xufox

+0

Es ist so schlimm? Vielleicht kann ich es einfach einmal durchlaufen und stattdessen die Ergebnisse für die nahe Zukunft speichern. – Howzieky

+0

Klingt, als wärst du im Browser, ja? Ich habe gerade diese Bibliothek angeschaut, die tun könnte, was du willst. http://defiantjs.com/ Sie müssten nur den XPath für diese Abfrage schreiben. –

Antwort

0

Regex? Nein. Halt genau dort.

Was Sie tun könnten, ist die Daten zuerst flach zu machen, oder sie flach an erster Stelle zu dienen.

[{ 
playerId: ..., 
... 
presetId: ..., 
},{ 
playerId: ..., 
... 
presetId: ..., 
}] 

Unter der Annahme, Preset-ID eindeutig ist, können Sie einfach array.filter oder array.find verwenden.

var players = flatData.filter(player => player.presetID === ID_TO_FIND); 

// or 

var player = flatData.find(player => player.presetID === ID_TO_FIND); 
+0

Wie würde ich es reduzieren? – Howzieky

Verwandte Themen