Wilayah
Data wilayah mengikuti Kepmendagri 300.2.2-2138/2025 sebagaimana diubah 300.2.2-2430/2025. Setiap level menambah satu segmen kode:
- Provinsi
province31DKI Jakarta - Kabupaten/kota
regency31.71Jakarta Pusat - Kecamatan
district31.71.01Gambir - Desa/kelurahan
village31.71.01.1001Gambir
- GambirKecamatan
31.71.01Daerah Khusus Ibukota Jakarta › Kota Administrasi Jakarta Pusat - GambirDesa/kelurahan
31.71.01.1001Daerah Khusus Ibukota Jakarta › Kota Administrasi Jakarta Pusat › Gambir - GambiranKecamatan
35.10.07Jawa Timur › Kabupaten Banyuwangi - Gambir BaruDesa/kelurahan
12.09.20.1012Sumatera Utara › Kabupaten Asahan › Kota Kisaran Timur - GambirmanisDesa/kelurahan
33.12.01.2004Jawa Tengah › Kabupaten Wonogiri › Pracimantoro - GambiranomDesa/kelurahan
33.12.07.2006Jawa Tengah › Kabupaten Wonogiri › Baturetno
Jalan di browser kamu.
Kode boleh ditulis dengan atau tanpa titik, spasi, atau strip (3171, 31.71, 31 71).
Fungsi
Section titled “Fungsi”| Go | TypeScript | Hasil |
|---|---|---|
region.Get(code) |
region.get(code) |
Satu wilayah dengan kode terkini |
region.Resolve(code) |
region.resolve(code) |
Seperti Get, tetapi mengikuti kode yang berubah karena pemekaran Kalimantan Utara 2012 dan Papua 2022 |
region.Children(code) |
region.children(code) |
Anak langsung, "" untuk semua provinsi |
region.Search(q, opts) |
region.search(q, opts) |
Wilayah yang namanya cocok dengan q, terbaik dulu |
region.ByPlate(code) |
region.byPlate(code) |
Kabupaten/kota yang memakai kode plat seperti DR |
region.ByAreaCode(code) |
region.byAreaCode(code) |
Provinsi atau kabupaten/kota di balik kode area telepon |
region.FromNIK(nik) |
region.fromNik(nik) |
Nama provinsi, kabupaten/kota, dan kecamatan dari NIK |
Di TypeScript semua fungsinya async, karena data kecamatan dan desa dipecah per provinsi dan baru dimuat saat dibutuhkan. Indeks provinsi, kabupaten/kota, alias, plat, dan kode area kurang dari 16 KB gzip. Di Go, data dimuat sekali saat pertama dipakai (sekitar 10 ms).
Chunk per provinsi memakai import() dinamis. Vite, webpack, Rollup, dan esbuild dengan splitting: true menghasilkannya sebagai file terpisah. Kalau bundler-mu menggabungkan import dinamis, semua provinsi masuk ke satu file (sekitar 500 KB gzip). Jadi aktifkan code splitting untuk build browser.
Opsi pencarian
Section titled “Opsi pencarian”Go SearchOptions |
TypeScript | Arti |
|---|---|---|
Level |
level |
Hanya satu level: province, regency, district, village |
Within |
within |
Hanya turunan kode ini |
Limit |
limit |
1 sampai 100, default 10 |
Pencocokan tidak membedakan huruf besar/kecil dan mengabaikan awalan Kabupaten/Kota. Nama yang persis sama muncul pertama, lalu awalan, awal kata, kemudian potongan kata mana pun. Query dibatasi 256 karakter.
Mencari kecamatan atau desa tanpa within akan membaca semua provinsi. Di browser, isi within supaya cuma satu provinsi yang dimuat.
Place (dari NIK)
Section titled “Place (dari NIK)”| Field | Catatan |
|---|---|
province |
Selalu ada |
regency |
Ada jika kabupaten/kotanya masih ada |
district |
Ada jika kecamatannya masih ada |
historical |
true kalau NIK memakai kode sebelum pemekaran. Namanya tetap nama terkini |
length, charset, unknown (kode strukturnya benar tetapi tidak ada), options.
Contoh
Section titled “Contoh”package main
import ( "fmt"
"github.com/haikalmumtaz233/nusaindex/region")
func main() { regency, err := region.Get("31.71") if err == nil { fmt.Println(regency.Name, regency.Level, regency.ParentCode) }
districts, err := region.Children("31.71") if err == nil { fmt.Println(len(districts), districts[0].Name) }
found, err := region.Search("gambir", region.SearchOptions{Level: region.LevelDistrict, Limit: 2}) if err == nil { for _, r := range found { fmt.Println(r.Code, r.Name) } }
current, err := region.Resolve("91.04") if err == nil { fmt.Println(current.Code, current.Name) }
byPlate, err := region.ByPlate("DR") if err == nil { fmt.Println(len(byPlate), byPlate[0].Name) }
byArea, err := region.ByAreaCode("0274") if err == nil { fmt.Println(byArea[0].Code, byArea[0].Name) }
place, err := region.FromNIK("7502010706599583") if err == nil { fmt.Println(place.Province.Name, place.Regency.Name, place.District.Name, place.Historical) }}import * as region from "nusaindex/region";
const regency = await region.get("31.71");if (regency.ok) { console.log(regency.value.name, regency.value.level, regency.value.parentCode);}
const districts = await region.children("31.71");if (districts.ok) { console.log(districts.value.length, districts.value[0]?.name);}
const found = await region.search("gambir", { level: "district", limit: 2 });if (found.ok) { for (const r of found.value) { console.log(r.code, r.name); }}
const current = await region.resolve("91.04");if (current.ok) { console.log(current.value.code, current.value.name);}
const byPlate = await region.byPlate("DR");if (byPlate.ok) { console.log(byPlate.value.length, byPlate.value[0]?.name);}
const byArea = await region.byAreaCode("0274");if (byArea.ok) { console.log(byArea.value[0]?.code, byArea.value[0]?.name);}
const place = await region.fromNik("7502010706599583");if (place.ok) { const { province, regency: kab, district, historical } = place.value; console.log(province.name, kab?.name, district?.name, historical);}Kota Administrasi Jakarta Pusat regency 318 Gambir31.71.01 Gambir35.10.07 Gambiran94.01 Kabupaten Nabire5 Kabupaten Lombok Barat34.71 Kota YogyakartaGorontalo Kabupaten Boalemo Paguyaman false© 2026 Haikal Mumtaz