Reputation: 2738
In Javascript, is it possible to get the Index of the object (in an array of objects) and use it inside of the same object in a function?
For example:
const foo = [
{
id: 1,
comments: getComments(this.index) // index of the object goes here
},
{
id: 34,
comments: getComments(this.index) // index of the object goes here
},
{
id: 21,
comments: getComments(this.index) // index of the object goes here
}
]
const getComments = function(index) {
return foo[index].id // return the ID of the actual object
}
Or is there a workaround for what I'm trying to achieve here?
Upvotes: 0
Views: 32
Reputation: 964
I assume this is for learning purposes as probably the use you are thinking could be implemented in a better way. The closest that you can do is this:
let foo = [
{
id: 1,
},
{
id: 34,
},
{
id: 21,
}
]
foo = foo.map(
(elem, index) => ({...elem, comments: getComments(index)})
)
function getComments(index) {
return foo[index].id // return the ID of the actual object
}
console.log(foo[2].comments)
Upvotes: 1
Reputation: 780984
Do it in two steps. First create the array of objects, then fill in the comments
property by calling the function on each element.
const foo = [
{
id: 1,
},
{
id: 34,
},
{
id: 21,
}
]
foo.forEach(el => el.comments = getComments(el));
function getComments(obj) {
return obj.id;
}
console.log(foo);
Upvotes: 1