Get an error when I call object's properties in Array

前端 未结 4 1502
悲&欢浪女
悲&欢浪女 2021-01-28 15:10

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

相关标签:
4条回答
  • 2021-01-28 15:21

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

    0 讨论(0)
  • 2021-01-28 15:23

    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!");
    }
    
    0 讨论(0)
  • 2021-01-28 15:28

    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!` );
      } );
    }
    
    0 讨论(0)
  • 2021-01-28 15:32

    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);
    
    0 讨论(0)
提交回复
热议问题