I am having the following array of objects:
const allItems = [];
const item1 = {"name":"Item 1","var":"item1","tooltip":"xxxxx","image":"/images/xxxx"};
allItems.push(item1);
const item2 = {"name":"Item 2","var":"item2","tooltip":"xxxxx","image":"/images/xxxx"};
allItems.push(item2);
const item3 = {"name":"Item 3","var":"item3","tooltip":"xxxxx","image":"/images/xxxx"};
allItems.push(item3);
In my console, i successfully get allItems and individual objects like item1 and I am getting attributes such as item1.name, item.image and so on.
I display these in a under using jQuery
allItems.forEach((q) =>{
$('#select-field').append('<option value="' + q.var + '">' + q.name + '</option>');
})
Now, .var
attribute is deliberately the same name as the variable of the object (const item1
) because I am not sure how to call the const item1
by name in my <option value="">
. I've tried with allItems[q]
but this brings the whole object and not its const [Object]
After that I want to read the object's attributes and do stuff with them (like I have a function that will create an image and put a tooltip called createImage()
) by calling them from my <option value="">
.
The idea is that the value of my option is item1
for example. I know this is just a string at this point and I want to access the object with the same name and start accessing its attributes.
$(function() {
$("#select-field").change(function() {
let currentlySelectedItem = $(this).val(); // this successfully gets the value name which is the same as the object
// Now I want to call the object currently selected and access its properties
console.log(currentlySelectedItem[tooltip]); // Undefined
createImage(currentlySelectedItem.tooltip, currentlySelectedItem.image); // Undefined
console.log(currentlySelectedItem); // Undefined
});
});
I've read all the similar questions and I can't use eval()
and suggestions like these Javascript use variable as object name will also not work for me.
Spent hours trying so I'd really appreciate some help with this.