Как преобразовать строку как имя поля объекта в JavaScript - PullRequest
22 голосов
/ 30 января 2011

У меня есть объект js, такой как:

obj = {
  name: 'js',
  age: 20
};

Теперь я хочу получить доступ к полю имени obj, но я могу получить только строку name, как преобразовать name в имя поля obj, а затем получить результат, подобный obj.name.

Заранее спасибо.

Ответы [ 5 ]

47 голосов
/ 30 января 2011

Вы можете получить доступ к свойствам объекта javascript, используя индекс, например:

var obj = {
  name: 'js',
  age: 20
};

var isSame = (obj["name"] == obj.name)
alert(isSame);

var nameIndex = "name"; // Now you can use nameIndex as an indexor of obj to get the value of property name.
isSame = (obj[nameIndex] == obj.name)

Проверьте пример @: http://www.jsfiddle.net/W8EAr/

10 голосов
/ 30 января 2011

В Javascript obj.name эквивалентно obj['name'], что добавляет необходимую косвенность.

В вашем примере:

var fieldName = 'name'
var obj = {
  name: 'js',
  age: 20
};
var value = obj[fieldName]; // 'js'
5 голосов
/ 30 января 2011

Это довольно просто, чтобы получить доступ к значению объекта через переменную, вы используете квадратные скобки:

var property = 'name';
var obj = {name: 'js'};
alert(obj[property]); // pops 'js'
2 голосов
/ 30 января 2011

Поскольку объекты являются ассоциативными массивами в javascript, вы можете получить доступ к полю 'name' как obj['name'] или obj[fieldName], где fieldName = 'name'.

0 голосов
/ 02 ноября 2018

Совсем не связан, но для любого, кто пытается определить имя поля объекта из строковой переменной, вы можете попробовать:

const field = 'asdf'
const obj = {[field]: 123}
document.body.innerHTML = obj.asdf
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...