Получение значения, связанного с целочисленным ключом, из объекта, если ключ существует (JavaScript)

#javascript #reactjs

Вопрос:

В настоящее время у меня есть объект с целочисленными ключами для определенных значений. Однако я еще не знаю, существует ли каждый ключ на самом деле на объекте.

Обычно я был бы в состоянии выполнить

 Object?.parentKey?.childKey
 

чтобы найти значение childKey , если оно существует. Однако, если childKey является целым числом, то

 Object?.parentKey?.0
 

не работает.

 Object['parentKey.0']
 

тоже не работает. Есть ли какой-нибудь способ сделать это?

Комментарии:

1. «У меня есть объект с целочисленными ключами» — Нет, у вас их нет. Ключи в объекте всегда являются строками (или символами).

2. @Andreas Этот объект извлечен из базы данных, где ключи были заданы целыми числами, я понимаю, что в JavaScript он по-прежнему рассматривается как строка, однако это не изменило того факта, что описанные выше методы не будут работать с нужным мне ключом. Спасибо за поправку, но это совсем не помогло.

Ответ №1:

Вопрос

Object?.parentKey?.0 не работает, так как допустимые идентификаторы javascript не могут начинаться с числа.

В JavaScript идентификаторы чувствительны к регистру и могут содержать буквы Юникода, $ , _ , и цифры (0-9), но могут не начинаться с цифры.

Object['parentKey.0'] не работает , если нет ключа, который буквально "parentKey.0" , т. е. { "parentKey.0": "value" }

Решение

Доступ как ключ динамического объекта (Вычисленные имена свойств)

 object?.parentKey?.[0]
 

или

 object?.parentKey?.['0']
 
 const object = {
  parentKey: {
    0: 'hello world!',
  },
};

console.log(object?.parentKey?.[0]);