Tidak Meratakan dan Meratakan Objek JavaScript Bersarang: Pelaksanaan Dioptimumkan
Tugas meratakan dan tidak meratakan objek JavaScript yang kompleks boleh memakan masa. Berikut ialah analisis komprehensif untuk mengoptimumkan operasi ini:
Cabarannya: Objek JavaScript perlu diratakan dengan "." sebagai pembatas untuk kekunci objek dan "[INDEX]" untuk tatasusunan.
Penyelesaian awal: Kod yang disediakan menyelesaikan masalah tetapi agak perlahan.
Pelaksanaan yang lebih pantas (menggunakan ungkapan biasa): Bergi memperkenalkan pelaksanaan yang jauh lebih pantas menggunakan ungkapan biasa. Ia menyahratakan objek dengan mengulangi sifat yang diratakan dan mencipta struktur bersarang dengan sewajarnya.
Pelaksanaan terpantas (bukan regex): Membina konsep Bergi, pelaksanaan yang disediakan menawarkan bukan regex terpantas versi. Ia menganggap peraturan khusus untuk nama utama, tidak termasuk integer pada permulaan atau noktah dalam nama.
Meningkatkan prestasi tidak rata: AaditMShah meningkatkan prestasi tidak rata dengan menggunakan penghuraian laluan sebaris dan bukannya String.split dalam gelung bersarang.
Kod akhir (tidak rata):
Object.unflatten = function(data) { "use strict"; if (Object(data) !== data || Array.isArray(data)) return data; var regex = /\.?([^.\[\]]+)|\[(\d+)\]/g, resultholder = {}; for (var p in data) { var cur = resultholder, prop = "", m; while (m = regex.exec(p)) { cur = cur[prop] || (cur[prop] = (m[2] ? [] : {})); prop = m[2] || m[1]; } cur[prop] = data[p]; } return resultholder[""] || resultholder; };
Kod akhir (ratakan):
Object.flatten = function(data) { var result = {}; function recurse (cur, prop) { if (Object(cur) !== cur) { result[prop] = cur; } else if (Array.isArray(cur)) { for(var i=0, l=cur.length; i<l; i++) recurse(cur[i], prop + "[" + i + "]"); if (l == 0) result[prop] = []; } else { var isEmpty = true; for (var p in cur) { isEmpty = false; recurse(cur[p], prop ? prop+"."+p : p); } if (isEmpty && prop) result[prop] = {}; } } recurse(data, ""); return result; };
Pengoptimuman ini meningkatkan prestasi bersarang rata dan tidak rata Objek JavaScript sambil mematuhi keperluan keserasian Penyemak Imbas.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Objek JavaScript Bersarang yang Meratakan dan Tidak Meratakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!