배열이 비어 있는지 또는 존재하는지 확인하는 방법은 무엇입니까?
페이지를 처음 로드할 때 이미지가 있는지 확인해야 합니다.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
왜요?
대/소문자 정의되지 않음
정의되지 않은 변수는 아직 할당하지 않은 변수입니다.
let array = new Array(); // "array" !== "array"
typeof array == "undefined"; // => true
대/소문자 구분 없음
일반적으로 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"
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과 정의되지 않은 truth를 모두 포함합니다.두 번째 조건은 빈 배열을 확인합니다.
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)
일을 .
선택적 체인
선택적 체인 제안이 4단계에 도달하고 광범위한 지원을 받고 있기 때문에 이를 위한 매우 우아한 방법이 있습니다.
if(image_array?.length){
// image_array is defined and has at least one element
}
다음을 사용해야 합니다.
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 )
로다시 & 언더스코어
( _.isArray(myArray) && myArray.length > 0 )
jQuery를 사용할 수 .isEmptyObject()
배열에 요소가 포함되어 있는지 확인합니다.
var testArray=[1,2,3,4,5];
var testArray1=[];
console.log(jQuery.isEmptyObject(testArray)); //false
console.log(jQuery.isEmptyObject(testArray1)); //true
출처: https://api.jquery.com/jQuery.isEmptyObject/
_.isArray(image_array) && !_.isEmpty(image_array)
존재하지 않는 경우 예외가 발생하지 않고 부울로 변환하는 간단한 방법:
!!array
예:
if (!!arr) {
// array exists
}
정의되지 않은 배열의 길이를 확인하면 예외가 발생할 수 있습니다.
if(image_array){
//array exists
if(image_array.length){
//array has length greater than zero
}
}
다음과 같이 확인하는 것이 가장 좋습니다.
let someArray: string[] = [];
let hasAny1: boolean = !!someArray && !!someArray.length;
let hasAny2: boolean = !!someArray && someArray.length > 0; //or like this
console.log("And now on empty......", hasAny1, hasAny2);
전체 샘플 목록 보기:
저는 자바스크립트에서 이 문제를 꽤 많이 접합니다.저에게 가장 좋은 방법은 길이를 확인하기 전에 광범위하게 체크하는 것입니다.이번 Q&A에서 다른 솔루션을 보았습니다만, 다음 중 하나를 확인할 수 있기를 원했습니다.null
또는undefined
또는 기타 잘못된 값.
if(!array || array.length == 0){
console.log("Array is either empty or does not exist")
}
먼다음항확니다합인을목저▁for다를 확인합니다.undefined
,null
중 이 완성됩니다. 이것은 부울이기 때문에 부울이 됩니다.OR
더 한 럼더위검는의 .array.length
어레이가 정의되지 않은 경우 오류가 발생할 수 있습니다.다음과 같은 경우에는 이 값에 도달하지 못합니다.array
이라undefined
또는null
따라서 조건의 순서는 매우 중요합니다.
배열로 선언된 변수가 없는 경우 다음과 같이 확인할 수 있습니다.
if(x && x.constructor==Array && x.length){
console.log("is array and filed");
}else{
var x= [];
console.log('x = empty array');
}
그러면 변수 x가 있는지 확인하고 변수 x가 있으면 채워진 배열인지 확인합니다.그렇지 않으면 빈 배열이 생성됩니다(또는 다른 작업을 수행할 수 있습니다).
배열 변수가 생성된 것이 확실하면 간단한 검사가 수행됩니다.
var x = [];
if(!x.length){
console.log('empty');
} else {
console.log('full');
}
배열을 확인하는 가장 가능한 방법을 보여주는 제 바이올린을 여기서 확인할 수 있습니다.
다음은 객체 범위 및 함수에 전달된 모든 유형의 가능한 데이터 유형과 관련된 몇 가지 문제를 관리하기 위해 오류를 발생시키는 함수로 포장된 내 솔루션입니다.
다음은 이 문제를 검토하는 데 사용된 제 바이올린입니다(소스).
var jill = [0];
var jack;
//"Uncaught ReferenceError: jack is not defined"
//if (typeof jack === 'undefined' || jack === null) {
//if (jack) {
//if (jack in window) {
//if (window.hasOwnP=roperty('jack')){
//if (jack in window){
function isemptyArray (arraynamed){
//cam also check argument length
if (arguments.length === 0) {
throw "No argument supplied";
}
//console.log(arguments.length, "number of arguments found");
if (typeof arraynamed !== "undefined" && arraynamed !== null) {
//console.log("found arraynamed has a value");
if ((arraynamed instanceof Array) === true){
//console.log("I'm an array");
if (arraynamed.length === 0) {
//console.log ("I'm empty");
return true;
} else {
return false;
}//end length check
} else {
//bad type
throw "Argument is not an array";
} //end type check
} else {
//bad argument
throw "Argument is invalid, check initialization";;
}//end argument check
}
try {
console.log(isemptyArray(jill));
} catch (e) {
console.log ("error caught:",e);
}
제가 (다른 언어에서 온) 작업하는 방법은 테스트할 수 있는 간단한 기능을 만드는 것입니다.
배열의 크기를 확인하고 매개 변수별로 빛을 전달하는 함수를 만듭니다.
isEmpty(size){
if(size==0) {
return true;
} else {
return false;
}
}
//then check
if(isEmpty(yourArray.length)==true){
//its empty
} else {
//not empty
}
당신은 이것을 해야 합니다.
if (!image_array) {
// image_array defined but not assigned automatically coerces to false
} else if (!(0 in image_array)) {
// empty array
// doSomething
}
높은 평가를 받은 답변 중 일부는 제가 jsfiddle에 넣을 때 "작동"하지만 동적으로 생성된 어레이 양이 많을 때 답변에 있는 이 코드의 대부분은 저에게는 작동하지 않습니다.
이것이 저를 위해 일하는 것입니다.
var from = [];
if(typeof from[0] !== undefined) {
//...
}
주의하세요, 정의되지 않은 인용문은 없습니다. 그리고 저는 길이를 신경쓰지 않습니다.
아마 당신의image_array
어레이가 아니라 일부 개체입니다.length
속성(예: 문자열) - 시도
if(image_array instanceof Array && image_array.length)
function test(image_array) {
if(image_array instanceof Array && image_array.length) {
console.log(image_array,'- it is not empty array!')
} else {
console.log(image_array,'- it is empty array or not array at all!')
}
}
test({length:5});
test('undefined');
test([]);
test(["abc"]);
저 같은 경우에는.array_.length
값이 내부에 있더라도 항상 0을 반환합니다.기본 인덱스가 아니기 때문일 수 있습니다.
어레이가 정의되어 있는지 확인하기 위해 사용합니다.typeof _array !== 'undefined'
그런 다음 날짜가 포함되어 있는지 확인하기 위해 빈 배열과 비교합니다._array !== []
사용할 수 있는 항목:
if (Array.isArray(arr) && !arr.length) {
console.log("Array is an array and is empty");
}
ts
isArray(obj: any)
{
return Array.isArray(obj)
}
html로
(prefix == undefined || !(isArray(사진)) &&photo.length > 0)
image_array를 생성하면 비어 있으므로 image_array.length는 0입니다.
아래 댓글에 명시된 바와 같이, 저는 이 질문의 답변을 바탕으로 제 답변을 편집합니다):
var image_array = []
다른 괄호 안에서는 코드 이전에 정의된 image_array에 대해 아무것도 변경하지 않습니다.
언급URL : https://stackoverflow.com/questions/11743392/how-to-check-if-an-array-is-empty-or-exists
'IT' 카테고리의 다른 글
SQL Server 날짜/시간 LIKE 선택? (0) | 2023.06.02 |
---|---|
"이전 형제" 선택기가 있습니까? (0) | 2023.06.02 |
Ruby File.open 모드 및 옵션은 무엇입니까? (0) | 2023.06.02 |
WPF 데이터 그리드의 텍스트 정렬 (0) | 2023.06.02 |
mongodb에서 중복 문서를 가장 빨리 제거하는 방법 (0) | 2023.06.02 |