자바스크립트에서 특정 배열 인덱스에 값이 있는지 확인하려면 어떻게 해야 하나요?

인덱스' 위치의 값이 존재하는지 여부를 테스트하는 데 이 방법이 효과가 있을까요, 아니면 더 좋은 방법이 있을까요?

if(arrayName[index]==""){
     // do stuff
}
질문에 대한 의견 (2)
해결책

자바스크립트의 모든 배열은 array[0]부터 시작하여 array[array.length - 1]까지 array.length 요소를 포함합니다. 정의에 따라 인덱스 i를 가진 배열 요소는 i0에서 array.length - 1 사이인 경우 배열의 일부라고 합니다.

즉, 자바스크립트 배열은 0에서 시작하여 최대값까지 선형이며, 배열에는 배열에서 특정 값이나 범위를 제외하는 메커니즘이 없습니다. 주어진 위치 인덱스(인덱스가 0이거나 양의 정수인 경우)에 값이 존재하는지 확인하려면 문자 그대로

if (index < array.length) {
  // do stuff
}

그러나 일부 배열 값은 널, 정의되지 않음, NaN, 무한대, 0 또는 다양한 값일 수 있습니다. 예를 들어 array.length 속성을 늘려 배열 값을 추가하면 새 값은 모두 정의되지 않은 값이 됩니다.

주어진 값이 의미 있는 값인지 또는 정의된 값인지 확인합니다. 즉, 미정의 또는 null이 아닙니다:

if (typeof array[index] !== 'undefined') {

또는

if (typeof array[index] !== 'undefined' && array[index] !== null) {

흥미롭게도 자바스크립트의 비교 규칙 덕분에 마지막 예제를 이렇게 최적화할 수 있습니다:

if (array[index] != null) {
  // The == and != operators consider null equal to only null or undefined
}  
해설 (12)

39, 그냥 이렇게 can& t:

if(arrayName.length > 0){   
    //or **if(arrayName.length)**
    //this array is not empty 
}else{
   //this array is empty
}
해설 (10)

어떤 브라우저를 사용할 때만 트렌크스 '아니다' 안전 및 오류가 발생합니다. 이것은 더 나은 솔루션:

if(array && array.length){   
   // not empty 
} else {
   // empty
}

또는, 이용할 수 있다.

Object.keys(__array__).length
해설 (2)
if(!arrayName[index]){
     // do stuff
}
해설 (2)
if(arrayName.length > index && arrayName[index] !== null) {
    //arrayName[index] has a value
}
해설 (7)
  • 파선-짧은 보편적 외곽진입 *

모든 어레이입니다 스케쳐내 파우시 값을 확인할 수 있는 경우 (예, 정의되지 않은, null 또는 빈 문자열을 거짓값) () 다음과 같은 방법을 사용하여 모든 됩니다

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

If you need to get a 파우시 value, 할 수 있어 첫 색인입니다 다음과 같습니다.

let falsyIndex; 

if(!['23', true, 2, null, {key: 'value'}].every(function(element, index) {falsyIndex = index; return !!element;})) {
  console.log(falsyIndex);
} // logs 3

그냥 a 파우시 value) 의 경우 주어진 인덱스화할 어레이에서는 확인해야 할 수 있습니다 just do it like this:

if (!!array[index]) {
  // array[index] is a correct value
}
else {
  // array[index] is a falsy value
}
해설 (0)
if(typeof arr ==='object' && arr instanceof Array ){
   if(!arr.length){
      println 'empty'
   }else{
      printn 'not Empty'
   }

}else{
   println 'Null'
}

39, & # 39 에서 짓궂군요 경우 Null&. - &gt. & # 39, & # 39, 해당 요소가 nulll 또는 같음 , 이 경우: # 39, & # 39 null& 필터링부터 후 모든 비워집니다 어레이입니다 있는지 확인합니다. 요소

if(!arr.clean().length){return 'is null'}

물론, 추가 청소하십시오 전에 방법:

Array.prototype.clean=function(){return this.filter(function(e){return (typeof  e !=='undefined')&&(e!= null)&&(e!='')})}
해설 (0)

무슨 뜻인지 의존하기 함께 empty&quot ";).

할 때 속성 값을 얻을 수 있는 객체에 대한 속성 값을 얻을 수 있습니다 '이름 없는 정의되지 않은'.

39 의 스파스 어레이에는 that& 어떻게 진행됩니까. 일부 인덱스 '0' 간 '와' array.length-1 존재합니다.

체크할 수 있도록 '어레이입니다 경우 [인덱스화할] = 정의되지 않은'.

그러나 정의되지 않은 '가치' 를 '속성' 인덱스화할 존재할 수 있습니다. 이 경우 필터링하도록 스케쳐내 '에서', '또는' 해스운프로페티 연산자입니다 설명에 따라 사용할 수 있습니다 https://stackoverflow.com/q/135448/1529630

index in array;
array.hasOwnProperty(index);

스케쳐내 정의되지 않은 '또는' null '가치' 를 기존 속성 고려해보십시오 존재하지 않는 느슨해짐 사용할 수 있습니다 '또는' 비교 '어레이입니다 [인덱스화할] = 정의되지 않은 어레이입니다 [인덱스화할] = null'.

알고 있는 경우 '을 (를)' '아니다' 인덱스화할 라이자리 크시 어레이입니다 분산, 비교할 수 있습니다. 하지만, 돌아올 수 있도록 할 수 있습니다 '정말' 인덱스화할 배열입니다 인덱스화하여 참조 https://stackoverflow.com/q/38163612/1529630

해설 (2)

꼭 이래야겠어요 추천합니까 다음과 같은 생성 함수를

function isEmptyEl(array, i) {
   return !(array[i]);
}

이와 같이 선고하게 수 있습니다.

if (isEmptyEl(arrayName, indexVal)) {
   console.log('arrayName[' + indexVal + '] is empty');
}

개발자가 따라야 하는 등 인기를 얻게 될 수 있도록 이왕티엘 인터페이스입니다 입력 오류 또는 이네스발 정의되지 않은 라이나미 com/go/4e6b330a_kr.

(It& # 39 의 프로그램 수비 때 일반적으로 Javascript 로 프로그래밍 좋습니다.)

오류가 발생할 경우 이 라이나미 버린 것과 같은 것은 정의되지 않았습니다.

Uncaught ReferenceError: arrayName is not defined
    at :2:15
    at Object.InjectedScript._evaluateOn (:895:140)
    at Object.InjectedScript._evaluateAndWrap (:828:34)
    at Object.InjectedScript.evaluate (:694:21)

비슷한 결과를 정의되지 않은 이네스발.

이 경우 오류가 확보하십시오 어레이나 인덱스 값이 존재하지 않습니다.

39 만, ll get a true 라이나미 경우 유효한 입력, you& [이네스발] 다음 중 일부임 다음과 같습니다.

  • nulll
  • undefined
  • 빈 문자열
  • 0
  • 거짓값
해설 (0)

, # 39 이라는 것은 무엇을 보고 있으면 어떻게 어레이에서는 let& 확인, 자바스크립트, 만일 하나님이 같은 값이 존재하지 어레이에서는 (아래 참조).

const arr = [1, 2, 3, 4, 5];

그리고 지금 우리는 거기에 있는지 6 방관하겠나 5 인덱스화할 있다.

arr[5];

그리고 우리 '정의되지 않은'.

그래서 저희에게 that& # 39 에 기본적으로 야, 이 정의되지 않은, 그래서 이 같은 일이 있는지 확인하는 가장 좋은 방법이다.

if("undefined" === typeof arrayName[index]) {
  //array value is not there...
}

, 이렇게 하면 더 안 it& s # 39 이 경우:

if(!arrayName[index]) {
  //Don't check like this..
}

이 때문에 우리는 어레이입니다 상상할 수도 없다.

const arr = [0, 1, 2];

우리가 해야 할 것:

if(!arr[0]) {
  //This get passed, because in JavaScript 0 is falsy
}

그래서 심지어 0 있는지 확인할 수 있듯이, 몇 가지 다른 것들로, t get it doesn& # 39 의 승인을 똑같이 할 수 있는 애플리케이션 및 무리는너희들이 갈레라 컴퍼니, 조심하십시오, 내가 나열하십시오 모두 다운.

    • 정의되지 않은 *: # 39 의 값이 정의되지 않은 '및' it& 정의되지 않았습니다.
    • nulll *: # 39 의 경우, 예를 들어 it& nulll DOM element 필터링되지 존재합니다.
  • 빈 문자열을 . 3. '& # 39, & # 39.' 0*. 4. 번호 제로
    • 난 *: 숫자가 아닙니다.
    • 거짓값 6.
해설 (0)

내 생각엔 이 같은 방침은 보세요들 적합한 선호하는 것은 OOP 또는 절차적 프로그래밍에 대한 서술. , &quot 질문 속에는 어떤 값 (a 트루시 또는 파우시 value), 인사이드® &quot '이섬 검증하십시오 값뿐 몸에요' 방식을 사용할 수 있습니다. "' [] 이섬 (el = &gt. 엘 (el!). "' 하지만, t, t # 39 - It isn& 완벽한 doesn& 데 필요한 모든 기능을 추가, 같은 논리로 적용하십시오 # 39 와 같은 '기능이 포함된 이왕티 (도착) {. } '.

  • It sounds) 보다 여전히 &quot, 이것은 '제로' 결과 [], 우리가 이 일을 할 때 길이? &quot 트렌크스 위험한 경우에 따라 '0' 입니다. 심지어 이 ' [] - 트렌크스 &gt. '은 그 길이, , 0 보다 큰 제로! &quot &quot 한다 "고 말했다.

고급 (예: "' [] 이섬 (el = &gt. 엘 (el!). 거짓값 // [nulll] 이섬 (el = &gt. 엘 (el!). 진정한 // [1, 3] 이섬 (el = &gt. 엘 (el!). 진정한 // "'

해설 (0)

몇 가지 놓친 것 같아 뭔가 지적하고 싶다. 즉, empty&quot &quot 것은 있을 수 있습니다. 어레이입니다 중간에 포지셔닝하십시오 너회의 어레이입니다. 다음 사항을 고려해야 합니다.

let arr = [0, 1, 2, 3, 4, 5]

delete arr[3]

console.log(arr)      // [0, 1, 2, empty, 4, 5]

console.log(arr[3])   // undefined

그런 다음 확인할 수 있는 자연 방법을 잘 모르는 경우, 나는 다른 방법이 있는지 여부를 확인하기 위해 이 어레이에는 멤버 정의되지 않았습니다.

if (arr[index] === undefined) {
  // member does not exist
}
해설 (0)

이 경우 어레이입니다 널임 시도하시겠습니까 [인덱스화할]

if (array[index] != null) 
해설 (0)

로다시 함께 할 수 있습니다.

if(_.has(req,'documents')){
      if (req.documents.length)
      _.forEach(req.documents, function(document){
        records.push(document);
      });
} else {
}

"만약 (_.has (# 39, & # 39 필요 documents&;;)) '가' 와 '라는 속성 객체에는 우리측 요청을 여부를 확인할 수 있는 경우 그 다음 문서를 제안" 만약 (레크 스트로쿠멘츠.렌크스)' 가 아닌 경우 확인할 수 있기 때문에, 다른 거즈 포리치 'like' 빈 어레이입니다 위주로 수 있습니다.

해설 (0)

아니면 정의된 삭제된 적이 있는지 확인합니다.

if(typeof arrayName[index]==="undefined"){
     //the index is not in the array
}

또한 일부 인덱스화할 삭제한 스토리지와의 수행됨 연관 배열 및

정의된 적이 있는지 확인합니다 삭제되었거나,) 은 비어 있는 값이 null 또는 논리 (NaN, 빈 문자열을 거짓값):

if(typeof arrayName[index]==="undefined"||arrayName[index]){
     //the index is not defined or the value an empty value
}
해설 (0)

내가 실행했음 를 통해 이 문제를 라라벨 데이터 테이블. 그는 '라는 속성 값을 저장하기 버튼' 활동에서 로그 및 JSON 이 값에 따라 빈 방관하겠나 것을 보여주고 싶었다.

뭐, 이 경우 데이터 테이블 sanlight 해석 및 오버클로킹된 객체에는 표시됨과 어레이입니다 비어 있지 않으면, 따라서 다음 솔루션이므로 협력했습니다 가져다줄래요:

render: function (data, type, full) {
    if (full.properties.length !== 0) {
        // do stuff
    }
}

길이 없는 객체를 재산이잖아

해설 (0)

로드시 라이브러리란 이렇게 하려면 다음과 같은 보다 효율적으로 사용할 수 있습니다.

예를 들어, 어레이에서는 경우 release. &quot pets&quot.

var pets = ['dog', undefined, 'cat', null];

console.log(_.isEmpty(pets[1])); // true
console.log(_.isEmpty(pets[3])); // true
console.log(_.isEmpty(pets[4])); // false

_.map( pets, (pet, index) => { console.log(index + ': ' + _.isEmpty(pet) ) });

의 값을 모두 확인하는 어레이입니다 또는 null 값이 정의되지 않은.

<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. &gt 거짓값 -;

var pets = ['dog', undefined, 'cat', null];

console.log(_.isEmpty(pets[1])); // true
console.log(_.isEmpty(pets[3])); // true
console.log(_.isEmpty(pets[4])); // false

_.map( pets, (pet, index) => { console.log(index + ': ' + _.isEmpty(pet) ) });
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>

끝 - &lt 스니핏 >;!

더 많은 예를 확인할 수 있는 http://underscorejs.org/

해설 (1)