“index”위치의 값이 존재하는지 또는 더 나은 방법이 있는지 테스트하는 데 도움이됩니까?
if(arrayName[index]==""){
// do stuff
}
답변
개념적으로 JavaScript의 배열에는 까지 array.length
시작하는 요소가 포함 됩니다. 인덱스 가 있는 배열 요소 는 배열 사이 에 포함 된 경우 배열의 일부로 정의됩니다 . 이 범위에 속하지 않으면 배열에 없습니다.array[0]
array[array.length - 1]
i
i
0
array.length - 1
따라서 개념적으로 배열은 항목이없는 해당 범위 내에 “갭”을 갖지 않는 메커니즘없이 0부터 시작하여 최대 값까지 선형입니다. 주어진 위치 인덱스 (값이 0 또는 양의 정수)에 값이 있는지 확인하려면 문자 그대로
if (i >= 0 && i < array.length) {
// it is in array
}
이제 JavaScript 엔진은 동적 언어에서는 의미가 없으며 특정 코드에는 비효율적이므로 거의 확실하게 배열 공간을 선형 및 연속적으로 할당하지 않습니다. 아마도 해시 테이블이거나 전략의 하이브리드 혼합 일 수 있으며 정의되지 않은 범위의 배열에는 자체 메모리가 할당되지 않았을 수 있습니다. 그럼에도 불구하고, JavaScript는 array.length
n 개의 배열을 n 개의 멤버 를 갖는 것으로 제시하기를 원하며 이름은 0 ~ n-1입니다. ,이 범위에서 아무것도 배열의 일부입니다.
당신은 아마 원하는 것은, 그러나, 배열에 값이 있는지 알고있다 정의 뭔가 실제로 , 그것은 아니다 – undefined
. 아마도 정의되어 있고 아닌지null
알고 싶을 수도 있습니다 . 값을 설정하지 않고 배열에 멤버를 추가 할 수 있습니다. 예를 들어 array.length
속성 을 증가시켜 배열 값을 추가하는 경우 새 값은입니다 undefined
.
주어진 값이 의미가 있는지 또는 정의되었는지 확인 즉 , 또는 아닙니다 .undefined
null
if (typeof array[index] !== 'undefined') {
또는
if (typeof array[index] !== 'undefined' && array[index] !== null) {
흥미롭게도 JavaScript의 비교 규칙으로 인해 마지막 예제는 다음과 같이 최적화 될 수 있습니다.
if (array[index] != null) {
// The == and != operators consider null equal to only null or undefined
}
답변
우리는 이것을 할 수 없습니다 :
if(arrayName.length > 0){
//or **if(arrayName.length)**
//this array is not empty
}else{
//this array is empty
}
답변
사용하는 .length
것은 안전하지 않으며 일부 브라우저에서 오류가 발생합니다. 더 나은 해결책은 다음과 같습니다.
if(array && array.length){
// not empty
} else {
// empty
}
또는 다음을 사용할 수 있습니다.
Object.keys(__array__).length
답변
if(!arrayName[index]){
// do stuff
}
답변
if(arrayName.length > index && arrayName[index] !== null) {
//arrayName[index] has a value
}
답변
짧고 보편적 인 접근
거짓, 정의되지 않은, null 또는 빈 문자열과 같이 잘못된 값이있는 배열을 확인하려면 다음과 같이 every () 메서드를 사용할 수 있습니다 .
array.every(function(element) {return !!element;}); // returns true or false
예를 들면 다음과 같습니다.
['23', null, 2, {key: 'value'}].every(function(element) {return !!element;}); // returns false
['23', '', 2, {key: 'value'}].every(function(element) {return !!element;}); // returns false
['23', true, 2, {key: 'value'}].every(function(element) {return !!element;}); // returns true
잘못된 값의 첫 번째 색인을 가져와야 할 경우 다음과 같이 할 수 있습니다.
let falsyIndex;
if(!['23', true, 2, null, {key: 'value'}].every(function(element, index) {falsyIndex = index; return !!element;})) {
console.log(falsyIndex);
} // logs 3
주어진 인덱스에 대해 잘못된 배열 값을 확인 해야하는 경우 다음과 같이 할 수 있습니다.
if (!!array[index]) {
// array[index] is a correct value
}
else {
// array[index] is a falsy value
}
답변
if(typeof arr ==='object' && arr instanceof Array ){
if(!arr.length){
println 'empty'
}else{
printn 'not Empty'
}
}else{
println 'Null'
}
‘Null’-> 요소가 null이거나 ”과 같은 경우,이 경우 : 모든 ‘null’요소를 필터링 한 후 배열이 비어 있는지 확인하십시오.
if(!arr.clean().length){return 'is null'}
물론, 전에 깨끗한 방법을 추가하십시오 :
Array.prototype.clean=function(){return this.filter(function(e){return (typeof e !=='undefined')&&(e!= null)&&(e!='')})}