Как получить имя свойства объекта и использовать это имя свойства в JavaScript - PullRequest
0 голосов
/ 28 июня 2018

У меня есть объект с именем: mapped_errors, который возвращает динамический объект.

иногда его значение равно:

{ _id:
   { location: 'body',
     param: '_id',
     value: 123,
     msg: '_id is required and must be a string' } }

и иногда его значение:

{ _name:
   { location: 'body',
     param: '_name',
     value: 123,
     msg: '_name is required and must be a string' } }

и я хочу вывести значение msg примерно так:

let obj_key = Object.keys(mapped_errors);
console.log(mapped_errors.{obj_key}.msg); // i know this is wrong

; -)

Ответы [ 5 ]

0 голосов
/ 28 июня 2018

Вы можете использовать Object.keys с индексом, как показано ниже

mapped_errors = { _id:
   { location: 'body',
     param: '_id',
     value: 123,
     msg: '_id is required and must be a string' } };
     
console.log(mapped_errors[Object.keys(mapped_errors)[0]].msg);     
     
mapped_errors = { _name:
   { location: 'body',
     param: '_name',
     value: 123,
     msg: '_name is required and must be a string' } };

console.log(mapped_errors[Object.keys(mapped_errors)[0]].msg);

Object.keys возвращает массив ключей [0] примет первый ключ и mapped_errors[Object.keys(mapped_errors)[0]].msg вернет содержимое сообщения.

0 голосов
/ 28 июня 2018

let obj = { _id:
   { location: 'body',
     param: '_id',
     value: 123,
     msg: '_id is required and must be a string' } }

console.log(obj[Object.keys(obj)[0]].msg)
0 голосов
/ 28 июня 2018

Единственная ошибка в вашем коде - mapped_errors.{obj_key}.msg. Вы должны использовать [] для доступа к значению свойства объекта, когда вы используете переменную для получения имени ключа, как mapped_errors[obj_key].

var mapped_errors = { _id:
   { location: 'body',
     param: '_id',
     value: 123,
     msg: '_id is required and must be a string' } };

let obj_key = Object.keys(mapped_errors);
console.log(mapped_errors[obj_key].msg);

mapped_errors = { _name:
   { location: 'body',
     param: '_name',
     value: 123,
     msg: '_name is required and must be a string' } }
     
obj_key = Object.keys(mapped_errors);
console.log(mapped_errors[obj_key].msg);
0 голосов
/ 28 июня 2018

Вы можете проверить, существует ли свойство mapped_errors.hasOwnProperty('_name')

Вы также можете получить доступ к первому ключу следующим образом: var keys = Object.keys(mapped_errors); console.log(mapped_errors[keys[0]])

Надеюсь, это поможет

0 голосов
/ 28 июня 2018

Просто зациклите ваш объект, используя его ключи:

Object.keys(mapped_errors).forEach(key => {
  const value = mapped_errors[key];

  console.log(value.msg);
})

Или, если вы не хотите зацикливаться, потому что будет только одна запись, попробуйте:

const key = Object.keys(mapped_errors)[0];

console.log(mapped_errors[key].msg);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...