Heim >Backend-Entwicklung >PHP-Tutorial >javascript - Sortiert JSON.parse() das zurückgegebene Array nach Schlüsselwert? So stellen Sie sicher, dass es nicht sortiert wird
Ich serialisiere ein sortiertes Array im Hintergrund und übergebe es an die Rezeption. Bei der Übertragung sortiert die Rezeption die Ergebnisse automatisch nach dem Schlüsselwert Als nächstes muss man es unsortieren lassen. Bitte geben Sie mir weitere Ratschläge
Das Obige ist die richtige Reihenfolge, und das Folgende ist die Reihenfolge nach json.parse() Vielleicht habe ich es nicht gut ausgedrückt
Ich serialisiere ein sortiertes Array im Hintergrund und übergebe es an die Rezeption. Bei der Übertragung sortiert die Rezeption die Ergebnisse automatisch nach dem Schlüsselwert Als nächstes muss man es unsortieren lassen. Bitte geben Sie mir weitere Ratschläge
Das Obige ist die richtige Reihenfolge, und das Folgende ist die Reihenfolge nach json.parse() Vielleicht habe ich es nicht gut ausgedrückt
JSON.parse generiert Objekte und die Schlüssel der Objekte sind in keiner Reihenfolge.
JavaScript-Objekte sind tatsächlich ungeordnet und scheinen aufgrund von HASH und anderen Gründen nach Schlüsselwert sortiert zu sein.
Wenn Sie ein geordnetes Array zurückgeben, sollte es nicht außer Betrieb sein. Wenn es nicht in Ordnung ist, geben Sie höchstwahrscheinlich ein Schlüssel-Wert-Paar-Objekt zurück. Geben Sie einen Testcode.
<code class="javascript">// 随机生成 data let data = []; for (var i = 0; i < 10; i++) { let textOrder = ~~(Math.random() * 10000).toString(); textOrder = `000${textOrder}`; textOrder = textOrder.substr(textOrder.length - 4); data.push({ key: ~~(Math.random() * 1000), text: `text${textOrder}` }); } // 按 text 排序 data.sort((a, b) => { let ta = a.text; let tb = b.text; return ta < tb ? -1 : (ta > tb ? 1 : 0); }); // 生成 JSON var json = JSON.stringify(data); console.log(json); // parse console.log(JSON.parse(json));</code>
Ich kenne mich mit PHP nicht aus, ich sollte es wahrscheinlich so handhaben
<code class="php">$data = array(20=>'a',10=>'b'); echo json_encode($data); // {"20":"a","10":"b"} // 上面是原来的输出结果 $list = []; foreach ($data as $k => $v) { array_push($list, array("key" => $k, "value" => $v)); } echo json_encode($list); [{"key":20,"value":"a"},{"key":10,"value":"b"}]</code>
Der auf diese Weise erhaltene JSON wird in ein Array analysiert, das der ursprünglichen Reihenfolge entspricht.
JSON.parse führt nicht dazu, dass die Sequenz durcheinander gebracht wird. Ich vermute, dass Sie {key1: value1, key2: value2} geschrieben haben, was eine JSON-Struktur ist, die Map ähnelt So etwas, also verwenden Sie Object.keys (). Dies führt zu der von Ihnen erwähnten Störung. Es wird empfohlen, eine Struktur wie [{key: value}, {key: value}, {key: value}] zurückzugeben, die direkt durchlaufen werden kann.
JSON.parse Mein Eindruck ist, die Zeichenfolge „{}“ in ein Objekt umzuwandeln
Die Reihenfolge der Verwendung von JSON.parse im Frontend des Arrays sollte sich nicht ändern, oder?
Wenn das Poster für ... oder ... an der Rezeption verwendet werden soll, gibt es meines Erachtens keine Möglichkeit, dies zu tun
Stellen Sie es einfach selbst zufällig zusammen
Konvertieren Sie den Schlüsselwert in eine Zeichenfolge und er wird nicht sortiert.
Referenz: http://php.net/manual/zh/func...
Konzentrieren Sie sich auf die Optionskonstanten