developer tip

JavaScript에서 null이거나 정의되지 않은 경우 값을 대체합니다.

optionbox 2020. 8. 11. 08:21
반응형

JavaScript에서 null이거나 정의되지 않은 경우 값을 대체합니다.


??C # 연산자를 JavaScript 에 적용해야하는 요구 사항이 있는데 방법을 모르겠습니다. C #에서 이것을 고려하십시오.

int i?=null;
int j=i ?? 10;//j is now 10

이제 JavaScript로 설정했습니다.

var options={
       filters:{
          firstName:'abc'
       } 
    };
var filter=options.filters[0]||'';//should get 'abc' here, it doesn't happen
var filter2=options.filters[1]||'';//should get empty string here, because there is only one filter

어떻게 올바르게 수행합니까?

감사.

편집 : 문제의 절반을 발견했습니다 my_object[0]. 객체에 '인덱서'표기법을 사용할 수 없습니다 ( ). 그것을 우회하는 방법이 있습니까? (사전에 필터 속성의 이름을 모르고 반복하고 싶지 않습니다).


다음은 JavaScript에 해당하는 것입니다.

var i = null;
var j = i || 10; //j is now 10

주의 논리 연산자는|| 부울 값 만 변환 할 수 있습니다 첫 번째 값 반환하지 않습니다 사실을 .

또한 하나의 단일 객체 대신 객체 배열을 사용하십시오.

var options = {
    filters: [
        {
            name: 'firstName',
            value: 'abc'
        }
    ]
};
var filter  = options.filters[0] || '';  // is {name:'firstName', value:'abc'}
var filter2 = options.filters[1] || '';  // is ''

색인으로 액세스 할 수 있습니다.


문제의 절반을 발견했습니다. '인덱서'표기법을 객체 (my_object [0])에 사용할 수 없습니다. 그것을 우회하는 방법이 있습니까?

아니; 이름에서 알 수 있듯이 객체 리터럴 은 배열 이 아니라 객체 이므로 속성의 특정 순서가 없기 때문에 인덱스를 기반으로 속성을 검색 할 수 없습니다. 값을 검색하는 유일한 방법은 특정 이름을 사용하는 것입니다.

var someVar = options.filters.firstName; //Returns 'abc'

또는 for ... in루프를 사용하여 반복하여 :

for(var p in options.filters) {
    var someVar = options.filters[p]; //Returns the property being iterated
}

참고 URL : https://stackoverflow.com/questions/1011317/replace-a-value-if-null-or-undefined-in-javascript

반응형