>

typescript 코드에는 객체가있는 배열이 있습니다. "getUsers (users)"함수를 호출하면 필요에 따라 결과가 반환되지만 콘솔에서이 오류가 발생합니다. "Uncaught TypeError : 정의되지 않은 'firstName'속성을 읽을 수 없습니다     getUsers (index.js : 20)에서     index.js : 23 "

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


  • 답변 # 1

    문제는 i <= users.length 입니다   i < users.length 여야합니다. . i++  i의 값을 1 씩 증가 시키지만 길이는 3이고 인덱스는 0부터 시작하므로 요소는 두 번째 인덱스까지 차지하므로 i <= users.length  실제로 정의되지 않은 세 번째 색인의 요소에 액세스하려고 시도합니다

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

  • 답변 # 2

    for 루프가 사용 가능한 배열 항목을 초과합니다. 가장 가까운 ID는 users.length - 1 입니다 .

    가장 쉬운 방법은 등호를 제거하는 것입니다.

    또한 forEach 에서 buildt 사용을 생각하십시오  또는 map  다음과 같은 기능 :

    function getUsers( users ) {
      users.forEach( u => {
        console.log( `${ u.firstName } is ${ u.age } years old!` );
      } );
    }
    
    

  • 답변 # 3

    길이보다 작거나 같아야합니다

    for (var i = 0; i < users.length; i++) {
       console.log(users[i].firstName + " is " + users[i].age + " years old!");
    }
    
    

  • 답변 # 4

    for-of 루프를 사용할 수 있습니다

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

관련 자료

  • 이전 쿠 렌토 복합 코드
  • 다음 authentication - ASPNETCore 2 패키지 복원 관련 경고 및 오류를 해결하는 방법