ywenbo
ywenbo

Reputation: 3091

How to convert string as object's field name in javascript

I have a js object like:

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

now i want to access name field of obj, but i can only get string 'name', so how to convert 'name' to obj's field name, then to get result like obj.name.

Thank you in advance.

Upvotes: 36

Views: 61478

Answers (5)

Alter Lagos
Alter Lagos

Reputation: 12550

Not related at all, but for anyone trying to define object's field name from a string variable, you could try with:

const field = 'asdf'
const obj = {[field]: 123}
document.body.innerHTML = obj.asdf

Upvotes: 14

Chandu
Chandu

Reputation: 82933

You can access the properties of javascript object using the index i.e.

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)

Check example@ : http://www.jsfiddle.net/W8EAr/

Upvotes: 67

Seldaek
Seldaek

Reputation: 42056

It's quite simple, to access an object's value via a variable, you use square brackets:

var property = 'name';
var obj = {name: 'js'};
alert(obj[property]); // pops 'js'

Upvotes: 8

Mathieu Ravaux
Mathieu Ravaux

Reputation: 353

In Javascript, obj.name is equivalent to obj['name'], which adds the necessary indirection.

In your example:

var fieldName = 'name'
var obj = {
  name: 'js',
  age: 20
};
var value = obj[fieldName]; // 'js'

Upvotes: 21

Vitalii Fedorenko
Vitalii Fedorenko

Reputation: 114510

As objects are associative arrays in javascript you can access the 'name' field as obj['name'] or obj[fieldName] where fieldName = 'name'.

Upvotes: 2

Related Questions