亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Jadual Kandungan
Pengenalan: Parameter pertanyaan URL dan medan jarang
Cabaran: Batasan Kaedah Standard
Penyelesaian: Membina fungsi parameter pertanyaan secara rekursif
Pelaksanaan fungsi teras
Analisis fungsi
Contoh penggunaan
Nota dan sambungan
Meringkaskan
Rumah hujung hadapan web tutorial js Membina Parameter Pertanyaan Bidang Ringkas URL yang Menyokong Objek Bersarang dalam JavaScript

Membina Parameter Pertanyaan Bidang Ringkas URL yang Menyokong Objek Bersarang dalam JavaScript

Oct 16, 2025 pm 12:51 PM

Membina Parameter Pertanyaan Lapangan Ringkas URL yang Menyokong Objek Bersarang dalam JavaScript

Artikel ini memperincikan cara menggunakan JavaScript untuk menukar objek yang mengandungi sifat bersarang ke dalam parameter pertanyaan URL yang mematuhi spesifikasi medan yang jarang berlaku. Dengan menyesuaikan fungsi rekursif, {type: {name: 's'}} dapat dengan cekap ditukar kepada bentuk parameter url jenis [name] = s, yang menyelesaikan masalah yang urlsearchparams standard tidak dapat mengendalikan struktur bersarang secara langsung, memastikan url yang dihasilkan memenuhi syarat -syarat tertentu.

Pengenalan: Parameter pertanyaan URL dan medan jarang

Dalam pembangunan web, kita sering perlu menukar objek JavaScript ke dalam parameter pertanyaan URL untuk menghantar data ke API Backend. Untuk pasangan nilai kunci mudah, seperti {Limit: 0, Offset: 10} ditukar kepada Limit = 0 & Offset = 10, antara muka UrlSearchParams JavaScript boleh mengendalikannya dengan baik. Walau bagaimanapun, apabila objek mengandungi struktur bersarang dan API memerlukan ekspresi dalam format "lapangan jarang", seperti penukaran {type: {name: 's', umur: 'n'}} untuk menaip [name] = s & type [umur] = n, kaedah standard menjadi tidak mencukupi. Format ini sangat biasa dalam beberapa reka bentuk API yang tenang dan digunakan untuk menentukan dengan tepat bidang yang perlu diperoleh atau diubah suai.

Cabaran: Batasan Kaedah Standard

Marilah kita pertimbangkan objek JavaScript berikut:

 const page = {
  Had: 0,
  mengimbangi: 10,
  Jenis: {
    Nama: 'S',
    Umur: 'N'
  }
};

Rentetan pertanyaan URL yang kami harapkan untuk menghasilkan adalah: had = 0 & offset = 10 & type [name] = s & type [usia] = n

Jika anda cuba menggunakan URLSearchParams, ia akan merentasi keseluruhan objek jenis, menyebabkan hasilnya tidak seperti yang diharapkan:

 const params = urlSearchParams baru (halaman);
console.log (params.toString ());
// Hasilnya mungkin sama dengan: had = 0 & offset = 10 & type = [objek objek]

Jelas sekali, ini tidak memenuhi keperluan untuk medan jarang. Oleh itu, kita memerlukan penyelesaian tersuai untuk mengendalikan objek bersarang secara rekursif dan menghasilkan format parameter pertanyaan yang betul.

Penyelesaian: Membina fungsi parameter pertanyaan secara rekursif

Untuk menyelesaikan masalah di atas, kita boleh menulis fungsi rekursif yang meleleh melalui sifat objek dan membina rentetan pertanyaan berdasarkan jenis harta (nilai mentah atau objek bersarang).

Pelaksanaan fungsi teras

Berikut adalah fungsi JavaScript yang melakukan ini:

 /**
 * Menukar objek JavaScript ke dalam rentetan parameter pertanyaan URL yang mematuhi spesifikasi medan yang jarang.
 * Menyokong objek bersarang dan kunci dan nilai encode url.
 *
 * @param {object} obj - objek javascript untuk ditukar.
 * @param {string} [parentkey = ''] - Nama kunci induk atribut yang sedang diproses, digunakan untuk membina struktur bersarang, seperti 'jenis' dalam 'jenis [nama]'.
 * @returns {String} Parameter Parameter Pertanyaan URL yang dihasilkan.
 */
const createesparsefieldSetQuery = (obj, parentKey = '') => {
  returnObject.Keys (OBJ)
    .Reduce ((acc, kekunci) => {
      // Membina nama kunci lengkap harta semasa, seperti 'jenis' atau 'jenis [nama]'
      const currentKey = ParentKey? `$ {parentkey} [$ {key}]`: key;
      const value = obj [key];

      jika (typeof value === 'object' && value! == null) {
        // Jika nilai itu adalah objek dan tidak batal, panggil dirinya secara rekursif untuk memproses objek bersarang pulangan acc.concat (CreateSparsefieldSetQuery (nilai, CurrentKey));
      } else {
        // Jika ia adalah nilai mentah (termasuk null), URL dikodkan dan ditambah kepada array hasil // encodeuricomponent digunakan untuk memastikan watak -watak khas (seperti ruang, &, =) dikodkan dengan betul acc.concat (`$ {encodeuriceMPonent)}}
      }
    }, []) // Inisialisasi array kosong untuk mengumpul semua serpihan parameter.join ('&'); // Akhirnya menyertai semua serpihan parameter dengan '&'};

Analisis fungsi

  1. CreateSparsefieldSetery (OBJ, ParentKey = '') : Fungsi ini menerima dua parameter: OBJ adalah objek yang sedang diproses, ParentKey adalah pilihan, dan digunakan untuk membina laluan penuh atribut bersarang (contohnya, jika atribut nama dalam objek jenis kini diproses, ParentKey akan menjadi jenis).
  2. Object.keys (obj) .reduce (...) : melintasi semua sifat langsung objek. Kaedah mengurangkan digunakan untuk mengumpul bahagian parameter pertanyaan yang dibina.
  3. const currentKey = parentKey? $ {parentkey} [$ {key}]: key; : Garis ini adalah kunci untuk membina format medan yang jarang. Jika ParentKey wujud (menunjukkan bahawa pemprosesan semasa adalah atribut bersarang), bungkus kunci dalam kurungan persegi dan masukkannya ke parentkey, membentuk format seperti jenis [nama]. Jika tidak, gunakan kekunci secara langsung.
  4. jika (typeof value === 'object' && value! == null) : Tentukan sama ada nilai atribut semasa adalah objek (dan tidak null).
    • Jika ia adalah objek, ini bermakna ada bersarang. Fungsi ini akan memanggil dirinya secara rekursif dan lulus CurrentKey sebagai parentkey baru untuk memproses tahap bersarang seterusnya.
    • Jika bukan objek (iaitu, nilai primitif seperti rentetan, nombor, nilai boolean, atau null), cawangan lain dimasukkan.
  5. kembali acc.concat ($ {encodeuricomponent (currentKey)} = $ {encodeuricomponent (value)}); : Untuk nilai mentah, kami menggunakan fungsi encodeuricomponent () untuk mengodkan kunci dan nilai. Ini adalah langkah yang sangat penting untuk mencegah watak -watak khas dalam URL (seperti ruang, &, =,?, Dan sebagainya) daripada merosakkan struktur URL atau menyebabkan kesilapan parsing. Kemudian, tambah kekunci yang dikodkan = pasangan nilai ke array pengumpulan.
  6. .Join ('&') : Kaedah Mengurangkan akhirnya akan mengembalikan array yang mengandungi semua kunci = nilai pasangan nilai, dan akhirnya menyertai mereka dengan & simbol melalui Join ('&') untuk membentuk rentetan pertanyaan lengkap.

Contoh penggunaan

Sekarang, kita boleh menggunakan fungsi ini untuk mengubah objek halaman kami:

 const page = {
  Had: 0,
  mengimbangi: 10,
  Jenis: {
    Nama: 'S',
    Umur: 'N',
    Butiran: {
      Warna: 'merah',
      Saiz: 'M'
    }
  },
  Status: 'Aktif'
};

const queryString = CreateSparsFieldSetQuery (Page);
console.log (queryString);

// output yang diharapkan:
// had = 0 & offset = 10 & type [name] = s & type [usia] = n & type [details] [color] = red & type [details] [size] = m & status = aktif
// selepas penyahkodan: had = 0 & offset = 10 & type [name] = s & type [usia] = n & type [details] [color] = red & type [details] [size] = m & status = aktif

// menganggap kita mempunyai URL asas
const baseUrl = "https://api.example.com/products";
const fulturl = `$ {baseUrl}? $ {querystring}`;
console.log (fulturl);
// Contoh URL Lengkap: https://api.example.com/products?limit=0&offset=10&type… nama=s &type ceren

Nota dan sambungan

  1. Kepentingan pengekodan URL : Seperti yang ditunjukkan oleh kod, encodeuricomponent () adalah sangat diperlukan. Ia memastikan bahawa semua aksara bukan alphanumerik dikodkan dengan betul, mengelakkan masalah parsing URL dan lubang keselamatan.
  2. Sokongan bersarang pelbagai peringkat : Fungsi rekursif di atas secara semulajadi dapat mengendalikan objek bersarang dari mana-mana kedalaman, selagi mereka mematuhi struktur lapangan jarang ibu bapa [anak] = nilai.
  3. Pemprosesan Array : Fungsi semasa terutamanya bertujuan untuk bersarang objek. Jika anda perlu memproses tatasusunan (contohnya, item [] = Apple & Item [] = oren atau item [0] = Apple & Item [1] = oren), anda perlu melanjutkan fungsi dan menambah penghakiman jenis array dan logik pembinaan nama utama yang sepadan. Ini biasanya melibatkan menggunakan indeks array sebagai nama utama.
  4. Nilai kosong dan tidak ditentukan :
    • Nilai null akan ditukar kepada rentetan "null" oleh encodeuricomponent (null).
    • Nilai yang tidak ditentukan akan ditukar kepada rentetan "undefined" rentetan dalam encodeuricomponent (undefined). Jika anda mahu atribut yang tidak ditentukan untuk diabaikan, anda perlu menambah logik penghakiman tambahan di dalam fungsi tersebut.
  5. Pertimbangan Prestasi : Untuk objek yang sangat besar dan sangat bersarang, fungsi rekursif mungkin mempunyai overhead prestasi. Tetapi dalam kebanyakan senario aplikasi web, overhead ini biasanya boleh diterima.
  6. Pemilihan Perpustakaan : Dalam projek sebenar, jika anda mempunyai keperluan yang lebih kompleks untuk pemprosesan parameter URL (contohnya, menyokong pelbagai format array, mengabaikan nilai null, peraturan pengekodan tersuai, dan lain-lain), anda boleh mempertimbangkan menggunakan perpustakaan pihak ketiga yang matang, seperti QS (penggantian untuk pertanyaan), yang menyediakan lebih banyak fungsi dan keserasian yang lebih komprehensif.

Meringkaskan

Dengan melaksanakan fungsi rekursif tersuai CreateSparsefieldSetQuery, kami berjaya menyelesaikan masalah menukarkan objek JavaScript yang mengandungi sifat bersarang ke dalam parameter pertanyaan URL yang mematuhi spesifikasi lapangan yang jarang. Penyelesaian ini bukan sahaja fleksibel dan mudah difahami, tetapi juga memastikan ketepatan dan keselamatan URL yang dihasilkan dengan mengintegrasikan encodeuricomponent. Kaedah tersuai ini menyediakan alat yang kuat dan praktikal apabila berhadapan dengan senario yang memerlukan kawalan yang tepat ke atas format parameter permintaan API.

Atas ialah kandungan terperinci Membina Parameter Pertanyaan Bidang Ringkas URL yang Menyokong Objek Bersarang dalam JavaScript. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Stock Market GPT

Stock Market GPT

Penyelidikan pelaburan dikuasakan AI untuk keputusan yang lebih bijak

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

JavaScript menyedari kesan penukaran imej klik: tutorial profesional JavaScript menyedari kesan penukaran imej klik: tutorial profesional Sep 18, 2025 pm 01:03 PM

Artikel ini akan memperkenalkan cara menggunakan JavaScript untuk mencapai kesan mengklik pada imej. Idea teras adalah menggunakan atribut data HTML5 untuk menyimpan laluan imej alternatif, dan mendengar klik acara melalui JavaScript, secara dinamik menukar atribut SRC, dengan itu menyedari penukaran imej. Artikel ini akan memberikan contoh dan penjelasan kod terperinci untuk membantu anda memahami dan menguasai kesan interaktif yang biasa digunakan ini.

Bagaimana untuk mendapatkan lokasi pengguna dengan API Geolokasi di JavaScript? Bagaimana untuk mendapatkan lokasi pengguna dengan API Geolokasi di JavaScript? Sep 21, 2025 am 06:19 AM

Pertama, periksa sama ada penyemak imbas menyokong GeolocationAPI. Jika disokong, hubungi getCurrentPosition () untuk mendapatkan koordinat lokasi semasa pengguna, dan dapatkan nilai latitud dan longitud melalui panggilan balik yang berjaya. Pada masa yang sama, berikan pengecualian pengendalian panggilan balik ralat seperti kebenaran penafian, ketiadaan lokasi atau tamat masa. Anda juga boleh lulus dalam pilihan konfigurasi untuk membolehkan ketepatan yang tinggi, menetapkan tempoh masa dan tempoh kesahihan cache. Seluruh proses memerlukan kebenaran pengguna dan pengendalian ralat yang sepadan.

API Komposisi NUXT 3 dijelaskan API Komposisi NUXT 3 dijelaskan Sep 20, 2025 am 03:00 AM

Penggunaan teras API komposisi NUXT3 termasuk: 1. DefinePagemeta digunakan untuk menentukan maklumat meta halaman, seperti tajuk, susun atur dan middleware, yang perlu dipanggil terus di dalamnya dan tidak boleh diletakkan dalam pernyataan bersyarat; 2. Usehead digunakan untuk menguruskan tag header halaman, menyokong kemas kini statik dan responsif, dan perlu bekerjasama dengan DefinePagemeta untuk mencapai pengoptimuman SEO; 3. UseasyncData digunakan untuk mendapatkan data asynchronous secara selamat, secara automatik mengendalikan status pemuatan dan ralat, dan menyokong kawalan pemerolehan data pelayan dan klien; 4. UseFetch adalah enkapsulasi useasyncdata dan $ ambil, yang secara automatik memasuki kunci permintaan untuk mengelakkan permintaan pendua

Cara membuat selang berulang dengan setInterval dalam javascript Cara membuat selang berulang dengan setInterval dalam javascript Sep 21, 2025 am 05:31 AM

Untuk membuat selang pengulangan dalam JavaScript, anda perlu menggunakan fungsi setInterval (), yang akan berulang kali melaksanakan fungsi atau blok kod pada selang milisaat tertentu. Sebagai contoh, setInterval (() => {console.log ("melaksanakan setiap 2 saat");}, 2000) akan mengeluarkan mesej setiap 2 saat sehingga dibersihkan oleh ClearInterval (intervalid). Ia boleh digunakan dalam aplikasi sebenar untuk mengemas kini jam, pelayan pengundian, dan lain -lain, tetapi memberi perhatian kepada had kelewatan minimum dan kesan masa pelaksanaan fungsi, dan membersihkan selang waktu ketika tidak lagi diperlukan untuk mengelakkan kebocoran ingatan. Terutama sebelum pemotongan komponen atau penutupan halaman, pastikan bahawa

Bagaimana cara menyalin teks ke papan klip di JavaScript? Bagaimana cara menyalin teks ke papan klip di JavaScript? Sep 18, 2025 am 03:50 AM

Gunakan kaedah WriteText Clipboardapi untuk menyalin teks ke papan klip, ia perlu dipanggil dalam konteks keselamatan dan interaksi pengguna, menyokong penyemak imbas moden, dan versi lama boleh diturunkan dengan execcommand.

Bagaimana untuk membuat rentetan berbilang baris dalam JavaScript? Bagaimana untuk membuat rentetan berbilang baris dalam JavaScript? Sep 20, 2025 am 06:11 AM

TheBestatorreateamulti-LinestringinjavascriptsisingSisisingTemplatalAlalSwithBackTticks, yangPreserveticks, whoPreserverekeandeexactlyaswritten.

Cara menghuraikan rentetan JSON ke dalam objek JavaScript Cara menghuraikan rentetan JSON ke dalam objek JavaScript Sep 21, 2025 am 05:43 AM

Untuk menghuraikan tali JSON ke dalam objek JavaScript, anda harus menggunakan kaedah JSON.Parse (), yang boleh menukar rentetan JSON yang sah ke dalam objek JavaScript yang sepadan, menyokong parsing objek dan tatasusunan bersarang, tetapi akan membuang kesilapan untuk JSON yang tidak sah. Oleh itu, anda perlu menggunakan cuba ... menangkap untuk mengendalikan pengecualian. Pada masa yang sama, anda boleh menukar nilai semasa parsing melalui fungsi reviver parameter kedua, seperti menukar rentetan tarikh ke dalam objek tarikh, dengan itu mencapai penukaran data yang selamat dan boleh dipercayai.

See all articles