Programing

배열이 비어 있는지 또는 존재하지 않는지 확인하십시오.

lottogame 2020. 3. 16. 08:11
반응형

배열이 비어 있는지 또는 존재하지 않는지 확인하십시오. JS [중복]


이 질문에는 이미 답변이 있습니다.

배열이 비어 있는지 또는 존재하지 않는지 확인하는 가장 좋은 방법은 무엇입니까?

이 같은?

if(array.length < 1 || array == undefined){
    //empty
}

undefined먼저 확인하고 싶습니다 . 다른 방법으로 배열을 수행하면 배열이 정의되지 않은 경우 오류가 발생합니다.

if (array === undefined || array.length == 0) {
    // array empty or does not exist
}

최신 정보

이 답변은 상당한 관심을 끌고 있기 때문에 다른 것보다 내 원래의 답변이 질문에서 평가되는 조건의 순서가 잘못되었음을 지적하고 싶습니다. 이런 의미에서 null값, length속성을 가진 다른 유형의 객체 등과 같은 여러 시나리오를 다루지 못합니다 . 또한 관용적 인 JavaScript는 아닙니다.

바보 같은 접근 방식
주석에서 영감을 얻은 다음은 현재 배열이 비어 있는지 또는 존재하지 않는지를 확인하는 바보 같은 방법으로 간주됩니다. 또한 변수가 배열을 참조하지 않고 length속성 이있는 다른 유형의 객체를 참조 할 수도 있습니다 .

if (!Array.isArray(array) || !array.length) {
  // array does not exist, is not an array, or is empty
  // ⇒ do not attempt to process array
}

그것을 분해하려면 :

  1. Array.isArray()의심 할 여지없이 인수가 배열인지 확인합니다. 값 아웃이 잡초처럼 null, undefined및 배열이 아닌 다른 것.
    이로 인해 객체 및 DOM 객체와 같은 배열과 유사한 객체가 제거 됩니다. 상황에 따라, 이것은 당신이 따르는 행동이 아닐 수도 있습니다.argumentsNodeList

  2. array.length조건 검사 가변인지 length특성은 평가 truthy의 값. 이미 우리는 참으로 배열을 다루고 있음을 설립 이전 조건이 더 엄격한 비교가 좋아하기 때문에 array.length != 0array.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
}

참고 URL : https://stackoverflow.com/questions/24403732/check-if-array-is-empty-or-does-not-exist-js

반응형