programing

어레이를 결합할 때 정의되지 않은 속성 '푸시'를 읽을 수 없습니다.

megabox 2023. 11. 5. 11:07
반응형

어레이를 결합할 때 정의되지 않은 속성 '푸시'를 읽을 수 없습니다.

배열의 내용을 다른 배열로 푸시할 때 다음과 같이 표시됨

이 토막글의 "Uncatched TypeError: 정의되지 않은 속성 'push'를 읽을 수 없습니다." 오류입니다.

var order = new Object(), stack = [];
for(var i=0;i<a.length;i++){
    if(parseInt(a[i].daysleft) == 0){ order[0].push(a[i]); }
    if(parseInt(a[i].daysleft) > 0){ order[1].push(a[i]); }
    if(parseInt(a[i].daysleft) < 0){ order[2].push(a[i]); }
}

두 번째 if 문에서 이 오류가 발생하는 이유는 무엇입니까?정말 고마워.

오류가 나는 이유는order[1]undefined.

이 오류 메시지는 코드 어딘가에서 어떤 이름을 가진 속성에 액세스하려고 시도하고 있음을 의미합니다(여기서는 "push"입니다). 그러나 개체 대신 참조를 위한 기본은 실제로undefined. 따라서 문제를 찾기 위해 속성 이름("push")을 참조하는 코드를 찾아 왼쪽에 무엇이 있는지 확인합니다.이 경우 코드는

if(parseInt(a[i].daysleft) > 0){ order[1].push(a[i]); }

그 말은 코드가 예상하는 것은order[1]집단이 될 겁니다하지만 이건 배열이 아니라 배열입니다.undefined, 오류가 나는군요왜 그럴까요?undefined? 뭐, 당신의 코드는 당신의 질문에 근거해서 다른 어떤 것도 만들지 못합니다.

자, 만약 당신이 그냥 여기에a[i]그 물건의 특정 속성에서, 전화할 필요가 없습니다..push()전혀:

var order = [], stack = [];
for(var i=0;i<a.length;i++){
    if(parseInt(a[i].daysleft) == 0){ order[0] = a[i]; }
    if(parseInt(a[i].daysleft) > 0){ order[1] = a[i]; }
    if(parseInt(a[i].daysleft) < 0){ order[2] = a[i]; }
}

배열 공백을 초기화하지 않은 경우 이 오류가 각도 단위로 발생합니다.
예를 들어 다음과 같습니다.

userlist: any[ ];
this.userlist = [ ]; 

아니면

userlist: any = [ ];

orderObject, 조금도 아닌Array().

push()배열용입니다.

이 게시글 참조

그래도 시도해 보십시오(그러나 하위 개체는 다음과 같아야 합니다).Arrays()):

var order = new Array();

// initialize order; n = index
order[n] = new Array();

// and then you can perform push()
order[n].push(some_value);

또는 order를 배열이 아닌 개체의 배열로 사용할 수도 있습니다.

var order = new Array();

order.push(a[n]);

대부분의 경우 배열을 초기화해야 합니다.

let list: number[] = [];

아래와 같이 타자기로 고쳤습니다.

  1. 화재 정의 및 초기화

페이지 번호: number[] = [ ];

  1. 그것을 채우는 것보다

    for (let i = 1; i < 201; i++) {
        this.pageNumbers.push(i);
    }
    

일반적으로 배열의 끝에 요소를 추가할 때 푸시 방법을 사용합니다.

여기서는 'order'인 배열이 아닌 개체에 푸시 메서드를 사용했습니다.

디버그하는 단계...

개체를 빈 배열로 변경합니다.

var order = [], stack = [];

이제 평소처럼 이 배열에 푸시 방법을 사용할 수 있습니다.

이 'order' 배열에 푸시 메서드를 사용하려면 배열에 푸시 메서드를 호출할 때 배열 인덱스를 사용하면 안 됩니다.배열 이름만 사용합니다.

var order = [], stack = [];

for(var i = 0; i<a.length; i++){

   if(parseInt(a[i].daysleft) == 0){ 
     order.push(a[i]); 
   }

   if(parseInt(a[i].daysleft) > 0){ 
     order.push(a[i]); 
   }

   if(parseInt(a[i].daysleft) < 0){ 
     order.push(a[i]); 
   }
}

인덱스를 지정할 필요는 없습니다.

대신에order[0].push(a[i]), 그냥 하다order.push(a[i]).

당신의 질문에 대한 답은 단순한 순서는 물체가 아니라 배열을 만드는 것입니다.varorder = new Array(); order. push(/item to push/); 이 오류가 나타날 때마다 이 오류가 어떤 속성의 왼쪽에 있는지 확인하면 됩니다. 이 경우에는 push가 order[]이므로 이 오류가 정의되지 않습니다.

순서[]가 정의되지 않은 이유입니다.

순서 정의[1]...[n] = 어느 정도 가치가 있습니다

이것으로 해결될 것입니다.

논리적 AND(&&)를 추가해야 합니다.

let users = [{id: 1, name: 'amoos'}, {id: 2, name: 'rifat'}]
let newUser = {id: 3, name: 'someone'} 
    users && users.push(newUser)    
    console.log('After', users)

언급URL : https://stackoverflow.com/questions/24841476/cannot-read-property-push-of-undefined-when-combining-arrays

반응형