Andreas Norman
Andreas Norman

Reputation: 1027

Create object property from variable contents

I have this simple object.

var myobj = {
   id: value
}

But instead of having a property named "id" I want the property identifier to be the value of:

$(this).attr('id');

I cannot preset this as I do not know the ID of the element. I want to be able to get my property value by

<id-of-element>.id

I understand I cannot do like this:

var myobj = {
   $(this).attr('id'): value
}

but how can I solve it? :)

Upvotes: 1

Views: 40

Answers (2)

Oriol
Oriol

Reputation: 288120

ES6 introduces computed property names, which allow you to do

var myobj = {
   [$(this).attr('id')]: value
}

Note browser support is currently negligible.

Upvotes: 0

MrCode
MrCode

Reputation: 64526

You can't assign a dynamic property name like that, but you can use the [] notation:

var myobj = {};
myobj[$(this).attr('id')] = value;

Upvotes: 5

Related Questions