简体   繁体   中英

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?

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);

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)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM