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