5

I am trying to get id of last element of my array.

This is how I am fetching last element of my array

let last = this.Array[this.Array.length-1];
console.log(last);

Here is the console of last element of array-

Object {id: 48, title: "I'm used to this"}
 title: "I'm used to this"
 id:  48
__proto__:  Object

Here is the list on which I have looked already-

How to retrieve the clicked ElementId in angularjs?
How to get the object's id?
how to get the id name in html for any object and many more but I could not.

I just wanted to access id : 48, can any one help me to do so.
Thanks In Advance.

aloisdg
  • 22,270
  • 6
  • 85
  • 105
S.Yadav
  • 4,273
  • 3
  • 37
  • 44
  • 1
    What about `console.log(last.id);`? – Günter Zöchbauer Jun 14 '17 at 07:21
  • It shows this- Error TS2339: Property 'id' does not exist on type 'Object'. – S.Yadav Jun 14 '17 at 07:24
  • Seems more a problem with your linter configuration, or use concrete classes and interfaces instead of `Object` if you have such strict linter rules configured. – Günter Zöchbauer Jun 14 '17 at 07:27
  • Thanks all, It is working for me, it was issue with declare part, initially it was- export class classname{ myArray: } which I just changed with export class classname{ myArray: } and it's working fine now. – S.Yadav Jun 14 '17 at 08:24

2 Answers2

11

Just do that:

let last:any = this.Array[this.Array.length-1];
console.log(last.id);
Duannx
  • 7,501
  • 1
  • 26
  • 59
6

You can do this.Array.slice(-1)[0].id, and with slice your original array is not changed too.

DEMO :

var array = [{
  id: 43,
  title: "I'm used to this"
},{
  id: 44,
  title: "I'm used to this"
},{
  id: 45,
  title: "I'm used to this"
},{
  id: 46,
  title: "I'm used to this"
},{
  id: 47,
  title: "I'm used to this"
},{
  id: 48,
  title: "I'm used to this"
}]

console.log('last id : ' + this.array.slice(-1)[0].id)

Update:

As your Array item is type of Object, So first convert it to some real class\interface type, Something like:

export  interface arrayItem{
    id?: number;
    title?: string;
}

then define your array type, like :

your Array like

this.Array : Array<arrayItem> = [ {
  id: 48,
  title: "I'm used to this"
  },
  //your other array items
]
anoop
  • 3,812
  • 2
  • 16
  • 28
  • Nope here is result- Error TS2339: Property 'id' does not exist on type 'Object'. – S.Yadav Jun 14 '17 at 07:31
  • convert your object into concrete class\interface for your object, like: `export interface arrayItem{id: number; title: string; }`, then make your array of type `Array` – anoop Jun 14 '17 at 07:35