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?
asked Jan 28, 2021 at 19:47
2 Answers 2
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);
answered Jan 28, 2021 at 20:00
Sign up to request clarification or add additional context in comments.
1 Comment
Radical_Activity
Really nice, it makes sense to run a function after the array has been created. How silly of me to not thinking of that. Thanks for pointing it out.
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)
answered Jan 28, 2021 at 20:28
Comments
lang-js
this.index
supposed to be?getComments
won't exist when the array is defined. (I am confused)comments
to the same thing as theid
property. What's the point of that?