#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]);