페이지가 처음으로로드 될 때 이미지가 있는지 확인 image_array
하고 마지막 이미지를로드해야합니다.
그렇지 않으면 미리보기 버튼을 비활성화하고 사용자에게 새 이미지 버튼을 누르고 빈 배열을 만들어 이미지를 넣도록 경고합니다.
문제는 항상 불 image_array
속에 있다는 것 입니다 else
. 배열이 존재하면 배열을 재정의하지만 경고는 작동하지 않습니다.
if(image_array.length > 0)
$('#images').append('<img src="'+image_array[image_array.length-1]+'" class="images" id="1" />');
else{
$('#prev_image').attr('disabled', 'true');
$('#next_image').attr('disabled', 'true');
alert('Please get new image');
var image_array = [];
}
업데이트 html을로드하기 전에 다음과 같은 것이 있습니다.
<?php if(count($images) != 0): ?>
<script type="text/javascript">
<?php echo "image_array = ".json_encode($images);?>
</script>
<?php endif; ?>
답변
if (typeof image_array !== 'undefined' && image_array.length > 0) {
// the array is defined and has at least one element
}
내재 된 전역 변수와 변수 게양으로 인해 문제가 발생할 수 있습니다. var
변수를 선언 할 때마다 사용하십시오 :
<?php echo "var image_array = ".json_encode($images);?>
// add var ^^^ here
그런 다음 나중에 실수로 해당 변수를 다시 선언하지 마십시오.
else {
...
image_array = []; // no var here
}
답변
배열이 비어 있는지 확인하려면
현대적인 ES5 + 방법 :
if (Array.isArray(array) && array.length) {
// array exists and is not empty
}
옛날 방식 :
typeof array != "undefined"
&& array != null
&& array.length != null
&& array.length > 0
컴팩트 한 방법 :
if (typeof array != "undefined" && array != null && array.length != null && array.length > 0) {
// array exists and is not empty
}
CoffeeScript 방식 :
if array?.length > 0
왜?
Case Undefined
정의 되지 않은 변수는 아직 아무것도 할당하지 않은 변수입니다.
let array = new Array(); // "array" !== "array"
typeof array == "undefined"; // => true
Case Null
일반적으로 null은 값이없는 상태입니다. 예를 들어 일부 데이터를 놓치거나 검색하지 못한 경우 변수는 null입니다.
array = searchData(); // can't find anything
array == null; // => true
배열이 아닌 경우
Javascript에는 동적 유형 시스템이 있습니다. 따라서 변수에 어떤 유형의 객체가 있는지 보장 할 수 없습니다. 의 인스턴스와 대화하지 않을 가능성이 Array
있습니다.
supposedToBeArray = new SomeObject();
typeof supposedToBeArray.length; // => "undefined"
array = new Array();
typeof array.length; // => "number"
Case Empty Array
이제 다른 모든 가능성을 테스트 했으므로의 인스턴스와 대화하고 Array
있습니다. 비어 있지 않은지 확인하기 위해 보유하고있는 요소의 수와 0 개 이상의 요소가 있는지 확인합니다.
firstArray = [];
firstArray.length > 0; // => false
secondArray = [1,2,3];
secondArray.length > 0; // => true
답변
어떻습니까 (ECMA 5.1) :
if(Array.isArray(image_array) && image_array.length){
// array exists and is not empty
}
답변
이것이 내가 사용하는 것입니다. 첫 번째 조건은 진실성 (null 및 undefined)을 모두 포함합니다. 두 번째 조건은 빈 배열을 확인합니다.
if(arrayName && arrayName.length > 0){
//do something.
}
또는 tsemer의 의견 덕분에 두 번째 버전을 추가했습니다.
if(arrayName && arrayName.length)
그런 다음 Firefox에서 Scratchpad를 사용하여 두 번째 조건을 테스트했습니다.
var array1;
var array2 = [];
var array3 = ["one", "two", "three"];
var array4 = null;
console.log(array1);
console.log(array2);
console.log(array3);
console.log(array4);
if (array1 && array1.length) {
console.log("array1! has a value!");
}
if (array2 && array2.length) {
console.log("array2! has a value!");
}
if (array3 && array3.length) {
console.log("array3! has a value!");
}
if (array4 && array4.length) {
console.log("array4! has a value!");
}
이는 또한 증명 if(array2 && array2.length)
과 if(array2 && array2.length > 0)
정확히 같은 일을하고 있습니다
답변
다음을 사용해야합니다.
if (image_array !== undefined && image_array.length > 0)
답변
이미지 배열 변수가 정의되었는지 테스트하려면 다음과 같이하십시오.
if(typeof image_array === 'undefined') {
// it is not defined yet
} else if (image_array.length > 0) {
// you have a greater than zero length array
}
답변
자바 스크립트
( typeof(myArray) !== 'undefined' && Array.isArray(myArray) && myArray.length > 0 )
Lodash 및 밑줄
( _.isArray(myArray) && myArray.length > 0 )