---
title: 'Utility'
description: "Fungsi pembantu dan operator utilitas UI."
navigation:
  icon: 'i-ph-code-block'
seo:
  title: 'Utility'
  description: "Fungsi pembantu dan operator utilitas UI."
---

## `missing` - Cek Key yang Hilang

Mengembalikan array berisi nama-nama key yang hilang atau bernilai null dalam data.

### Sintaks
```json
{"missing": ["key1", "key2", ...]}
{"missing": "single_key"}
```

### Parameter
- **keys** (array|string): Daftar key yang ingin diperiksa keberadaannya.

### Tipe Kembalian
Array - Berisi nama-nama key yang tidak ditemukan atau bernilai null. Mengembalikan array kosong `[]` jika semua key tersedia.

### Contoh

**Validasi input wajib:**
```json
// Data: {"name": "Alice", "age": 30}
{"missing": ["name", "email"]}
// → ["email"]
```

**Penggunaan dalam validasi:**
```json
{"if": [
  {"==": [{"length": {"missing": ["name", "email"]}}, 0]},
  "Valid",
  "Mohon isi bidang yang wajib diisi"
]}
```

---

## `missing_some` - Cek Kehadiran Minimum

Mengembalikan key yang hilang hanya jika jumlah key yang tersedia kurang dari angka minimum yang ditentukan.

### Sintaks
```json
{"missing_some": [minimum, ["key1", "key2", ...]]}
```

### Contoh

**Minimal salah satu harus diisi:**
```json
// Data: {"phone": "12345"}
{"missing_some": [1, ["email", "phone"]]}
// → [] (karena sudah ada 1 yang terisi)
```

---

## `return` - Kembalikan Nilai Mentah

Mengembalikan nilai JSON apa adanya tanpa dievaluasi lebih lanjut. Berguna untuk mengembalikan struktur objek atau array yang kompleks.

### Sintaks
```json
{"return": any_value}
```

### Contoh
```json
{"return": {"status": "success", "code": 200}}
// → {"status": "success", "code": 200}
```

---

## `RANGEOPTIONS` - Buat Opsi Rentang

Menghasilkan array objek berisi `label` dan `value` dari rentang angka tertentu, biasanya digunakan untuk dropdown UI.

### Sintaks
```json
{"RANGEOPTIONS": [min, max]}
```

### Contoh
```json
{"RANGEOPTIONS": [1, 3]}
// → [{"label": "1", "value": "1"}, {"label": "2", "value": "2"}, {"label": "3", "value": "3"}]
```

---

## `MAPOPTIONS` - Petakan Tabel ke Opsi UI

Mengubah array of objects menjadi format opsi pilihan UI (label dan value).

### Sintaks
```json
{"MAPOPTIONS": [table, label_field, value_field]}
```

### Contoh
```json
// Data: {"users": [{"id": 1, "name": "Alice"}, {"id": 2, "name": "Bob"}]}
{"MAPOPTIONS": [{"var": "users"}, "name", "id"]}
// → [{"label": "Alice", "value": 1}, {"label": "Bob", "value": 2}]
```

---

## `MAPOPTIONSIF` - Pemetaan Opsi Kondisional

Memetakan tabel ke opsi pilihan UI dengan tambahan kriteria filter (semua kriteria harus terpenuhi).

### Sintaks
```json
{"MAPOPTIONSIF": [table, label_field, value_field, condition1, operator, field, ...]}
```

### Contoh
```json
// Filter hanya produk yang aktif
{"MAPOPTIONSIF": [
  {"var": "products"},
  "name",
  "id",
  true, "==", "active"
]}
```

---

## Praktik Terbaik

1. **Gunakan `missing` untuk validasi form** guna memberikan feedback instan mengenai bidang yang belum diisi.
2. **Gunakan `return`** jika Anda ingin mengirimkan struktur data statis kembali ke aplikasi tanpa ingin mesin mencoba mengevaluasi isinya sebagai logika.
3. **Manfaatkan `MAPOPTIONSIF`** untuk membuat dropdown yang saling bergantung (cascading dropdowns), misalnya memilih kota berdasarkan provinsi yang dipilih.

---

## Catatan Performa

- **`missing`** dioptimalkan untuk pengecekan cepat pada struktur data yang besar.
- **`MAPOPTIONS`** melakukan ekstraksi data secara efisien tanpa menyalin seluruh objek.
- **`MAPOPTIONSIF`** akan berhenti mengevaluasi baris data segera setelah satu kondisi filter tidak terpenuhi (short-circuit).
