Radical_Activity
Radical_Activity

Reputation: 2738

Get index of Object inside Array and use it in a function

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

Answers (2)

Jose Marin
Jose Marin

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

Barmar
Barmar

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

Related Questions