I have an array of objects and for each object I assign an ID and a task to do, as the following;
const Data = [{ id: 1, task: doSomething() }, { id: 2, task: doSomethingElse() }, { id: 3, task: doAnotherThing() }, { id: 4, task: DoYetAnotherThing() }, ]
I have a for loop which goes over each of the objects in the array and compares it against the wanted id (which is not permanent). When found, I want the program to run it’s task. That’s when I run into problems:
let wantedID = 3 for (const key of Data) { if (key.id == wantedID) { key.task } }
I thought that if I just mention key.task
it would call the function and the program would run the task, as key.task
is a call for the function, but it doesn’t work. trying key.task()
threw an error, as key.task is not a function..?
How can I fix this?
Thanks!
Advertisement
Answer
Remove the () from the object and add them in the for loop. Also define the functions themselves
const Data = [{ id: 1, task: doSomething }, { id: 2, task: doSomethingElse }, ] let wantedID = 2 for (const key of Data) { if (key.id == wantedID) { key.task() } } function doSomething(){ console.log("doSomething") } function doSomethingElse(){ console.log("doSomethingElse") }