어레이가 비어 있는지 없는지 확인하는 방법
어레이가 비어 있는지 없는지 확인하는 가장 좋은 방법은 무엇입니까?
이런 거?
if(array.length < 1 || array == undefined){
//empty
}
체크하고 싶다undefined
먼저 반대로 하면 배열이 정의되지 않은 경우 오류가 발생합니다.
if (array === undefined || array.length == 0) {
// array does not exist or is empty
}
갱신하다
이 답변은 꽤 주목을 받고 있기 때문에, 저의 원답은 무엇보다도 질문의 조건의 잘못된 순서에 대응하고 있는 것을 지적하고 싶습니다.이 점에서 다음과 같은 몇 가지 시나리오에 대처하지 못합니다.null
값, 기타 유형의 오브젝트length
재산 등이것은 또한 매우 관용적인 자바스크립트도 아니다.
완벽한 접근법
코멘트에서 힌트를 얻어, 현재 어레이가 비어 있는지 없는지를 확인할 수 있는 가장 확실한 방법은 다음과 같습니다.또한 변수가 배열을 참조하지 않고 다른 유형의 개체를 참조할 수 있음을 고려합니다.length
소유물.
if (!Array.isArray(array) || !array.length) {
// array does not exist, is not an array, or is empty
// ⇒ do not attempt to process array
}
분석 방법:
는 당연히 인수가 배열인지 여부를 확인합니다
Array.isArray()
.이것은 다음과 같은 가치를 제거한다.null
,undefined
배열이 아닌 다른 모든 것들도 마찬가지입니다.
이렇게 하면 개체나 DOM 개체와 같은 어레이와 유사한 개체도 제거됩니다.당신의 상황에 따라, 이것은 당신이 추구하는 행동이 아닐 수 있습니다.그
array.length
이 변수가 현재 상태인지 아닌지를 확인합니다.length
속성은 truthy 값으로 평가됩니다.이전 조건에서는 어레이를 실제로 취급하고 있다는 것이 이미 확립되어 있기 때문에 다음과 같은 보다 엄격한 비교가 가능합니다.array.length != 0
또는array.length !== 0
는 여기서 필수가 아닙니다.
실용적인 접근법
많은 경우 위의 내용은 과잉 살상으로 보일 수 있습니다.TypeScript와 같은 상위 언어를 사용하여 컴파일 시 대부분의 유형 검사를 수행하거나 개체가 실제로 어레이인지 또는 어레이와 같은지에 대해 전혀 신경 쓰지 않을 수 있습니다.
그런 경우에는 다음과 같은 보다 관용적인 JavaScript를 사용하는 경향이 있습니다.
if (!array || !array.length) {
// array or array.length are falsy
// ⇒ do not attempt to process array
}
또는 더 많은 경우, 그 반대가 됩니다.
if (array && array.length) {
// array and array.length are truthy
// ⇒ probably OK to process array
}
ECMAScript 2020에 선택적 체인 연산자(엘비스 연산자)가 도입됨에 따라, 이는 더욱 단축될 수 있습니다.
if (!array?.length) {
// array or array.length are falsy
// ⇒ do not attempt to process array
}
또는 그 반대입니다.
if (array?.length) {
// array and array.length are truthy
// ⇒ probably OK to process array
}
언급URL : https://stackoverflow.com/questions/24403732/how-to-check-if-array-is-empty-or-does-not-exist
'programing' 카테고리의 다른 글
MySQL 연결 연산자 (0) | 2022.09.18 |
---|---|
정확한 브라우저 이름과 버전을 얻는 방법 (0) | 2022.09.18 |
serialVersion이란UID와 그것을 사용해야 하는 이유는 무엇입니까? (0) | 2022.09.17 |
도커 파일에 mariaDB 베이스를 구축할 수 없습니다. (0) | 2022.09.17 |
PHP에서 JavaScript로 JSON을 반환하시겠습니까? (0) | 2022.09.17 |