어레이를 결합할 때 정의되지 않은 속성 '푸시'를 읽을 수 없습니다.
배열의 내용을 다른 배열로 푸시할 때 다음과 같이 표시됨
이 토막글의 "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 = [ ];
order
가Object
, 조금도 아닌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[] = [];
아래와 같이 타자기로 고쳤습니다.
- 화재 정의 및 초기화
페이지 번호: number[] = [ ];
그것을 채우는 것보다
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
'programing' 카테고리의 다른 글
javascript를 사용하여 로케일 단기 날짜 형식 가져오기 (0) | 2023.11.05 |
---|---|
Can C++ array end at memory boundary? (0) | 2023.11.05 |
Google Sign In 버튼을 클릭하면 앱이 다운됩니다. (0) | 2023.11.05 |
POI를 사용하여 숫자 형식으로 Excel 셀 값 설정 (0) | 2023.11.05 |
Oracle PL/SQL where 절에서 변수를 사용하는 방법 (0) | 2023.11.05 |