In typescript code I have an array with objects in it. When I call \"getUsers(users)\" function, it returns the result as I need, but in console I get this error \"Uncaught Type
The issue is with i <= users.length
, it need to be i < users.length
.i++
will increment the value of i by 1 but the length is three and the index start from 0 so the elements are occupied till second index, hence i <= users.length
will actually try to access the element in the third index which is unefined
let users = [{
firstName: "John",
lastName: "Doe",
age: 34
},
{
firstName: "Jack",
lastName: "Jackson",
age: 23
},
{
firstName: "Ann",
lastName: "Watson",
age: 24
}
];
function getUsers(users) {
for (var i = 0; i < users.length; i++) {
console.log(users[i].firstName + " is " + users[i].age + " years old!");
}
}
getUsers(users);
it should be less than length not less than equal to
for (var i = 0; i < users.length; i++) {
console.log(users[i].firstName + " is " + users[i].age + " years old!");
}
Your for loop exceeds the available array items. The heighest ID is users.length - 1
.
So the easiest way is to remove the equal-sign.
Also think of using the buildt in forEach
or map
function like this:
function getUsers( users ) {
users.forEach( u => {
console.log( `${ u.firstName } is ${ u.age } years old!` );
} );
}
You can use for-of loop
let users = [
{
firstName: "John",
lastName: "Doe",
age: 34
},
{
firstName: "Jack",
lastName: "Jackson",
age: 23
},
{
firstName: "Ann",
lastName: "Watson",
age: 24
}
];
function getUsers(users) {
for (var user of users) {
console.log(user.firstName + " is " + user.age + " years old!");
}
}
getUsers(users);