---
title: 'Ringkasan'
description: "Referensi lengkap urut abjad untuk semua operator di JSONEval-Rs."
navigation:
  icon: 'i-ph-code-block'
seo:
  title: 'Ringkasan'
  description: "Referensi lengkap urut abjad untuk semua operator di JSONEval-Rs."
---

## Pengantar

Dokumen ini memberikan referensi cepat untuk lebih dari **80 operator** yang tersedia di JSON-Eval-RS. Setiap operator didokumentasikan secara rinci di halaman kategorinya masing-masing dengan contoh lengkap, panduan troubleshooting, dan praktik terbaik.

### Cara Menggunakan Panduan Ini

1. **Lookup Cepat**: Temukan operator berdasarkan kategori di tabel di bawah.
2. **Pelajari Detail**: Klik halaman kategori untuk dokumentasi yang komprehensif.
3. **Pustaka Pola**: Lihat bagian pola umum untuk contoh dunia nyata.
4. **Troubleshooting**: Setiap halaman kategori menyertakan bagian troubleshooting untuk masalah umum.

### Struktur Dokumentasi

Setiap kategori operator menyertakan:
- **Tinjauan**: Konteks dan kasus penggunaan untuk kategori operator tersebut.
- **Deskripsi Operator**: Sintaks, parameter, tipe kembalian, dan contoh.
- **Contoh Kompleks**: Skenario dunia nyata dengan penjelasan langkah-demi-langkah.
- **Troubleshooting**: Masalah umum dan solusinya.
- **Praktik Terbaik**: Panduan untuk penggunaan operator yang efektif.
- **Catatan Performa**: Tips optimasi dan pertimbangan lainnya.

### Apa itu JSON-Eval-RS?

JSON-Eval-RS adalah implementasi JSON Logic yang diperluas yang menambahkan operator kuat untuk:
- **Fungsi gaya Excel**: Pembulatan, operasi tanggal, manipulasi string.
- **Operasi Tabel**: Pencarian data (lookup), pencarian, dan query.
- **Array Lanjutan**: Pemrograman fungsional dengan map, filter, reduce.
- **Keamanan Tipe**: Mode perbandingan ketat (strict) dan longgar (loose).
- **Perhitungan Finansial**: Penanganan desimal yang presisi.

### Contoh Cepat

**Hitung usia dari tanggal lahir:**
```json
{"DATEDIF": [{"var": "birthdate"}, {"today": null}, "Y"]}
```

**Filter dan transformasi data:**
```json
{"map": [
  {"filter": [{"var": "users"}, {"var": "active"}]},
  {"var": "email"}
 ]}
```

**Mencari nilai dari tabel:**
```json
{"VALUEAT": [
  {"var": "rateTable"},
  {"INDEXAT": [{"var": "age"}, {"var": "rateTable"}, "minAge"]},
  "rate"
]}
```

**Format mata uang:**
```json
{"STRINGFORMAT": [
  {"round": [{"*": [{"var": "price"}, 1.1]}, 2]},
  2,
  "$"
]}
```

## Inti & Akses Variabel

| Operator | Deskripsi | Contoh |
|----------|-------------|---------|
| `var` | Akses variabel dari data | `{"var": "user.name"}` |
| `$ref` / `ref` | Referensi JSON Schema | `{"$ref": "path"}` |
| Literals | null, bool, angka, string, array | `42`, `"teks"`, `[1,2,3]` |

## Operator Logika

| Operator | Deskripsi | Contoh |
|----------|-------------|---------|
| `and` | Logika AND | `{"and": [cond1, cond2]}` |
| `or` | Logika OR | `{"or": [val1, val2]}` |
| `not` / `!` | Logika NOT | `{"!": value}` |
| `if` | Kondisional | `{"if": [cond, then, else]}` |
| `xor` | Exclusive OR | `{"xor": [a, b]}` |
| `ifnull` | Null coalescing | `{"ifnull": [val, default]}` |
| `isempty` | Cek apakah kosong | `{"isempty": value}` |
| `empty` | Literal string kosong | `{"empty": null}` |

## Operator Perbandingan

| Operator | Deskripsi | Contoh |
|----------|-------------|---------|
| `==` | Sama dengan (longgar) | `{"==": [a, b]}` |
| `===` | Sama dengan (ketat) | `{"===": [a, b]}` |
| `!=` | Tidak sama dengan (longgar) | `{"!=": [a, b]}` |
| `!==` | Tidak sama dengan (ketat) | `{"!==": [a, b]}` |
| `<` | Kurang dari | `{"<": [a, b]}` |
| `<=` | Kurang dari atau sama dengan | `{"<=": [a, b]}` |
| `>` | Lebih dari | `{">": [a, b]}` |
| `>=` | Lebih dari atau sama dengan | `{">=": [a, b]}` |

## Operator Aritmatika

| Operator | Deskripsi | Contoh |
|----------|-------------|---------|
| `+` | Penjumlahan | `{"+": [1, 2, 3]}` |
| `-` | Pengurangan / Negasi | `{"-": [10, 3]}` |
| `*` | Perkalian | `{"*": [2, 3, 4]}` |
| `/` | Pembagian | `{"/": [10, 2]}` |
| `%` | Modulo | `{"%": [7, 3]}` |
| `^` / `pow` | Pangkat | `{"^": [2, 3]}` |

## Fungsi Matematika

| Operator | Deskripsi | Contoh |
|----------|-------------|---------|
| `abs` | Nilai absolut | `{"abs": -5}` |
| `max` | Nilai maksimum | `{"max": [1, 5, 3]}` |
| `min` | Nilai minimum | `{"min": [1, 5, 3]}` |
| `round` | Pembulatan desimal | `{"ROUND": [3.14159, 2]}` |
| `roundup` | Pembulatan ke atas | `{"ROUNDUP": [3.1, 0]}` |
| `rounddown` | Pembulatan ke bawah | `{"ROUNDDOWN": [3.9, 0]}` |
| `ceiling` | Ceiling ke kelipatan | `{"CEILING": [4.3, 0.5]}` |
| `floor` | Floor ke kelipatan | `{"FLOOR": [4.7, 0.5]}` |
| `trunc` | Pemotongan desimal | `{"TRUNC": [8.9, 2]}` |
| `mround` | Pembulatan ke kelipatan | `{"MROUND": [10, 3]}` |

## Operator String

| Operator | Deskripsi | Contoh |
|----------|-------------|---------|
| `cat` | Penggabungan (concatenate) | `{"cat": ["Halo", " ", "Dunia"]}` |
| `concat` | Penggabungan (alias) | `{"CONCAT": [a, b, c]}` |
| `substr` | Substring | `{"substr": [teks, 0, 5]}` |
| `search` | Cari substring | `{"SEARCH": ["cari", "teks"]}` |
| `left` | Karakter kiri | `{"LEFT": [teks, 5]}` |
| `right` | Karakter kanan | `{"RIGHT": [teks, 5]}` |
| `mid` | Karakter tengah | `{"MID": [teks, 1, 5]}` |
| `len` / `length` | Panjang string/array | `{"len": teks}` |
| `splittext` | Pisahkan dan ambil index | `{"splittext": [teks, ",", 0]}` |
| `splitvalue` | Pisahkan menjadi array | `{"splitvalue": [teks, ","]}` |
| `stringformat` | Format angka | `{"STRINGFORMAT": [1234.5, 2, "$"]}` |

## Fungsi Tanggal

| Operator | Deskripsi | Contoh |
|----------|-------------|---------|
| `today` | Tanggal hari ini | `{"today": null}` |
| `now` | Tanggal & waktu sekarang | `{"now": null}` |
| `year` | Ambil tahun | `{"YEAR": date}` |
| `month` | Ambil bulan | `{"MONTH": date}` |
| `day` | Ambil hari | `{"DAY": date}` |
| `date` | Konstruksi tanggal | `{"DATE": [2024, 1, 15]}` |
| `dateformat` | Format tanggal | `{"DATEFORMAT": [date, "short"]}` |
| `days` | Selisih hari | `{"DAYS": [end, start]}` |
| `yearfrac` | Fraksi tahun | `{"YEARFRAC": [start, end]}` |
| `datedif` | Perbedaan tanggal | `{"DATEDIF": [start, end, "Y"]}` |

## Operator Array

| Operator | Deskripsi | Contoh |
|----------|-------------|---------|
| `map` | Transformasi array | `{"map": [array, logic]}` |
| `filter` | Filter array | `{"filter": [array, logic]}` |
| `reduce` | Reduksi array | `{"reduce": [array, logic, init]}` |
| `all` | Semua cocok | `{"all": [array, logic]}` |
| `some` | Beberapa cocok | `{"some": [array, logic]}` |
| `none` | Tidak ada yang cocok | `{"none": [array, logic]}` |
| `merge` | Gabungkan array | `{"merge": [arr1, arr2]}` |
| `in` | Berisi nilai | `{"in": [val, array]}` |
| `sum` | Jumlahkan nilai | `{"SUM": [array]}` |
| `for` | Loop dan bangun | `{"FOR": [1, 5, logic]}` |
| `multiplies` | Ratakan dan kalikan | `{"MULTIPLIES": [vals]}` |
| `divides` | Ratakan dan bagi | `{"DIVIDES": [vals]}` |

## Operator Tabel/Lookup

| Operator | Deskripsi | Contoh |
|----------|-------------|---------|
| `VALUEAT` | Ambil nilai tabel | `{"VALUEAT": [table, idx, col]}` |
| `MAXAT` | Nilai baris terakhir | `{"MAXAT": [table, col]}` |
| `INDEXAT` | Cari index | `{"INDEXAT": [val, table, field]}` |
| `MATCH` | Cocokkan kondisi | `{"MATCH": [table, val, field]}` |
| `MATCHRANGE` | Cocokkan dalam rentang | `{"MATCHRANGE": [table, min, max, val]}` |
| `CHOOSE` | Pilih yang cocok | `{"CHOOSE": [table, val, field]}` |
| `FINDINDEX` | Pencarian kompleks | `{"FINDINDEX": [table, conditions]}` |

## Operator Utility

| Operator | Deskripsi | Contoh |
|----------|-------------|---------|
| `missing` | Cek key yang hilang | `{"missing": ["key1", "key2"]}` |
| `missing_some` | Cek kehadiran minimum | `{"missing_some": [1, keys]}` |
| `return` | Kembalikan nilai mentah | `{"return": value}` |
| `RANGEOPTIONS` | Buat opsi rentang | `{"RANGEOPTIONS": [1, 100]}` |
| `MAPOPTIONS` | Petakan ke opsi | `{"MAPOPTIONS": [table, lbl, val]}` |
| `MAPOPTIONSIF` | Pemetaan kondisional | `{"MAPOPTIONSIF": [table, lbl, val, cond]}` |

## Alias Operator

Banyak operator memiliki beberapa nama untuk kompatibilitas:

| Utama | Alias | Gaya |
|---------|---------|-------|
| `var` | - | Standar |
| `$ref` | `ref` | JSON Schema |
| `not` | `!` | JavaScript |
| `pow` | `^`, `**` | Matematika |
| `len` | `length`, `LEN` | Excel/JS |
| `cat` | `concat`, `CONCAT` | JS/Excel |

**Case Sensitivity:**
- Huruf kecil: Gaya JavaScript (`round`, `sum`, `concat`)
- Huruf besar: Gaya Excel (`ROUND`, `SUM`, `CONCAT`)
- Keduanya bekerja dengan cara yang sama

## Variabel Khusus

Tersedia dalam konteks tertentu:

| Variabel | Konteks | Deskripsi |
|----------|---------|-------------|
| `{"var": ""}` | map, filter, all, some, none | Elemen saat ini |
| `{"var": "accumulator"}` | reduce | Nilai akumulasi |
| `{"var": "current"}` | reduce | Elemen saat ini |
| `{"var": "$iteration"}` | FOR | Index loop |

## Pola Umum

### Validasi
```json
{"if": [
  {"==": [{"length": {"missing": ["email", "name"]}}, 0]},
  "valid",
  "invalid"
]}
```

### Perhitungan
```json
{"round": [
  {"*": [{"var": "price"}, {"+": [1, {"var": "taxRate"}]}]},
  2
]}
```

### Pemrosesan Array
```json
{"map": [
  {"filter": [{"var": "users"}, {"var": "active"}]},
  {"var": "name"}
]}
```

### Pencarian Tabel
```json
{"VALUEAT": [
  {"var": "table"},
  {"INDEXAT": [{"var": "key"}, {"var": "table"}, "id"]},
  "value"
]}
```

### Perhitungan Tanggal
```json
{"-": [
  {"year": {"today": null}},
  {"year": {"var": "birthdate"}}
]}
```

## Koersi Tipe

### Ke Angka
- `"123"` → `123`
- `true` → `1`
- `false` → `0`
- `null` → `0`
- `""` → `0`

### Ke Boolean (Truthiness)
- Falsy: `false`, `null`, `0`, `""`
- Truthy: Lainnya

### Ke String
- Semua nilai dapat dikonversi melalui `cat`

## Opsi Konfigurasi

Operator yang mematuhi konfigurasi:

| Opsi | Berpengaruh pada | Deskripsi |
|--------|---------|-------------|
| `safe_nan_handling` | Operasi matematika | Mengonversi NaN/Infinity menjadi 0 atau null |
| `recursion_limit` | Semua | Kedalaman maksimal nesting (default: 100) |

## Tips Performa

1. **Kompilasi sekali, jalankan berkali-kali**
2. **Gunakan optimasi otomatis** (flattening, short-circuit)
3. **Gunakan fast path** untuk operasi sederhana
4. **Cache pencarian yang mahal**
5. **Minimalkan operasi bersarang** jika memungkinkan

## Link Dokumentasi

- **[Operator Inti](core)** - Variabel dan literal
- **[Operator Logika](logical)** - Logika boolean
- **[Operator Perbandingan](comparison)** - Perbandingan nilai
- **[Operator Aritmatika](arithmetic)** - Operasi matematika
- **[Operator String](string)** - Manipulasi teks
- **[Fungsi Matematika](math)** - Matematika tingkat lanjut
- **[Fungsi Tanggal](date)** - Operasi tanggal/waktu
- **[Operator Array](array)** - Transformasi array
- **[Operator Tabel](table)** - Pencarian data
- **[Operator Utility](utility)** - Fungsi pembantu

---

**Total Operator: 80+**

Implementasi ini memperluas JSON Logic standar dengan operator khusus untuk fungsi gaya Excel, operasi tabel, serta manipulasi tanggal/string tingkat lanjut.
