Awalnya diterbitkan di https://claritydev.net.

Dalam dunia pengembangan web, mengelola dan memanipulasi data teks adalah tugas yang penting. String, yang merupakan tipe data utama untuk konten tekstual dalam bahasa pemrograman seperti JavaScript dan TypeScript, dilengkapi dengan banyak metode untuk pemrosesan data teks yang efektif. Namun, ketika menangani karakter Unicode yang berada di luar rentang ASCII, tugas ini bisa menjadi jauh lebih menantang.

Unicode adalah standar pengkodean karakter universal. Ini mencakup hampir setiap karakter dari semua sistem penulisan yang digunakan saat ini. Meskipun representasi yang luas ini merupakan salah satu kekuatan Unicode, hal ini juga menimbulkan tantangan unik bagi pengembang. Misalnya, rangkaian karakter Unicode yang berbeda dapat mewakili karakter visual atau kumpulan karakter yang sama. Variasi ini dapat menyebabkan potensi inkonsistensi dan tantangan dalam pemrosesan teks dalam aplikasi web.

Salah satu tugas tertentu yang tantangannya menjadi nyata adalah memfilter serangkaian objek berdasarkan masukan pengguna. Pada artikel ini, kita akan mempelajari skenario khusus ini dan mengeksplorasi cara melakukan perbandingan string yang tidak sensitif terhadap diakritik dalam JavaScript.

Meskipun memfilter array objek berdasarkan nilai string mungkin tampak seperti tugas yang mudah pada pandangan pertama, hal ini bisa menjadi cukup rumit, terutama ketika berhadapan dengan karakter Unicode dan memastikan konsistensi di berbagai sistem penulisan. Di akhir artikel ini, Anda akan memiliki pemahaman yang lebih baik tentang cara mengatasi kerumitan ini dalam proyek JavaScript atau TypeScript Anda.

Memfilter array objek dalam JavaScript

Mari kita pertimbangkan contoh praktis di mana kita memiliki daftar opsi bandara untuk komponen Select dalam aplikasi web. Tujuan kami adalah memfilter opsi ini berdasarkan masukan pengguna sebelum mengisi komponen Select.

const filter = 'Cancun';
const airports = [
  {
    name: 'Húsavík Airport',
    code: 'HZK',
  },
  {
    name: 'Cancún International Airport',
    code: 'CUN',
  },
  {
    name: 'Zürich Airport',
    code: 'ZRH',
  },
  {
    name: 'Kraków John Paul II International Airport',
    code: 'KRK',
  },
  {
    name…