[jquery] 배열이 비어 있는지 또는 null인지 확인

jQuery에서 배열이 비어 있는지 또는 null인지 확인하는 방법을 알고 싶습니다. 시도 array.length === 0했지만 작동하지 않았습니다. 오류도 발생하지 않았습니다.

다음은 코드입니다.

var album_text = new Array();

$("input[name='album_text[]']").each(function(){
  if( $(this).val() &&  $(this).val() != '') {
    album_text.push($(this).val());
  }
});
if (album_text.length === 0) {
  $('#error_message').html("Error");
}

else {
  // send data
}



답변

선택기가 실제로 작동하는 한 배열 길이를 확인하는 코드에 아무런 문제가 없습니다. 그것은 당신이 원하는 것을해야합니다. 더 간단하고 읽기 쉽게 코드를 정리하는 방법에는 여러 가지가 있습니다. 다음은 내가 정리 한 내용에 대한 메모가있는 정리 된 버전입니다.

var album_text = [];

$("input[name='album_text[]']").each(function() {
    var value = $(this).val();
    if (value) {
        album_text.push(value);
    }
});
if (album_text.length === 0) {
    $('#error_message').html("Error");
}

else {
  //send data
}

당신이하던 일과 내가 바꾼 일에 대한 몇 가지 메모.

  1. $(this)는 항상 유효한 jQuery 객체이므로 확인할 이유가 없습니다 if ($(this)). 내부에 DOM 개체 $(this).length가 없을 수도 있지만 필요한 경우 이를 통해 확인할 수 있지만 .each()항목이 없으면 루프가 실행되지 않으므로 루프 $(this)내부에 .each()항상 무언가가 있기 때문에 여기에서는 필요 하지 않습니다 .
  2. 동일한 함수에서 $ (this)를 여러 번 사용하는 것은 비효율적입니다. 한 번 지역 변수로 가져온 다음 해당 지역 변수에서 사용하는 것이 훨씬 좋습니다.
  3. []대신 .NET을 사용하여 배열을 초기화하는 것이 좋습니다 new Array().
  4. if (value)값에서 것이다 모두 보호하는 문자열 것으로 예상 될 때 value == null, value == undefined그리고 value == ""당신이 할 필요가 없습니다를 if (value && (value != "")). if (value)세 가지 빈 조건을 모두 확인하기 위해 할 수 있습니다 .
  5. if (album_text.length === 0) 유효하고 초기화 된 배열 (여기에 있음)이면 배열이 비어 있는지 여부를 알려줍니다.

이 선택기로 무엇을하려고 $("input[name='album_text[]']")합니까?


답변

사용자 JQuery는 배열에 요소가 포함되어 있는지 여부를 확인하는 EmptyObject입니다.

var testArray=[1,2,3,4,5];
var testArray1=[];
console.log(jQuery.isEmptyObject(testArray)); //false
console.log(jQuery.isEmptyObject(testArray1)); //true


답변

''배열로 푸시하기 전에 (빈 문자열)을 확인해야 합니다. 배열에 빈 문자열 인 요소가 있습니다. 그러면 album_text.length === 0잘 작동합니다.


답변

@jesenko가 언급했듯이 jquery에서 $ .isEmptyObject를 사용하여 배열이 비어 있는지 확인하는 것은 위험하다고 생각합니다. 방금 그 문제를 만났습니다.

에서 isEmptyObject의 문서 , 그것은 언급 :

인수는 항상 일반 JavaScript 객체 여야합니다.

으로 결정할 수 있습니다 $.isPlainObject. 의 반환 $.isPlainObject([])은 거짓입니다.


답변