@zkrvndm
Софт для автоматизации

Как создать объект с регистронезависимыми ключами?

Это в принципе возможно такое?

Чтобы оба свойства ниже выдавали одно и то же:
// .. Создаем объект каким-нибудь хитрым образом и ...

console.log(obj['Test']);
console.log(obj['teSt']);
  • Вопрос задан
  • 91 просмотр
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Если завернуть объект в Proxy, можно будет изменять ключи при обращениях к объекту:

const obj = new Proxy({}, {
  get(target, key) {
    const lowerKey = key.toLowerCase();
    return target[Object.hasOwn(target, lowerKey) ? lowerKey : key];
  },
  set(target, key, val) {
    target[key.toLowerCase()] = val;
    return true;
  },
  has(target, key) {
    return key in target || key.toLowerCase() in target;
  },
  defineProperty(target, key, descriptor) {
    return Object.defineProperty(target, key.toLowerCase(), descriptor);
  },
  deleteProperty(target, key) {
    return delete target[key.toLowerCase()];
  },
  getOwnPropertyDescriptor(target, key) {
    return Object.getOwnPropertyDescriptor(target, key.toLowerCase());
  },
});
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы