무언가를 확인하는 것이 자바스크립트에서 비어 있습니까?
자바스크립트에서 변수가 비어있는지 확인하려면 어떻게 해야 합니까?
if(response.photo) is empty {
do something
else {
do something else
}
response.photo
JSON에서 온 것인데, 가끔은 비어있을 수도 있고, 데이터 셀이 비어있을 수도 있습니다!비어 있는지 확인하고 싶습니다.
빈 문자열을 테스트하는 경우:
if(myVar === ''){ // do stuff };
선언되었지만 정의되지 않은 변수를 확인하는 경우:
if(myVar === null){ // do stuff };
정의되지 않을 수 있는 변수를 확인하는 경우:
if(myVar === undefined){ // do stuff };
두 변수를 모두 선택하는 경우, 변수가 null이거나 정의되지 않은 경우:
if(myVar == null){ // do stuff };
이것은 당신이 생각하는 것보다 더 큰 질문입니다.변수는 여러 가지 방법으로 비워질 수 있습니다.당신이 알아야 할 것이 무엇인가에 달려있습니다.
// quick and dirty will be true for '', null, undefined, 0, NaN and false.
if (!x)
// test for null OR undefined
if (x == null)
// test for undefined OR null
if (x == undefined)
// test for undefined
if (x === undefined)
// or safer test for undefined since the variable undefined can be set causing tests against it to fail.
if (typeof x == 'undefined')
// test for empty string
if (x === '')
// if you know its an array
if (x.length == 0)
// or
if (!x.length)
// BONUS test for empty object
var empty = true, fld;
for (fld in x) {
empty = false;
break;
}
여기에는 모든 경우가 포함되어야 합니다.
function empty( val ) {
// test results
//---------------
// [] true, empty array
// {} true, empty object
// null true
// undefined true
// "" true, empty string
// '' true, empty string
// 0 false, number
// true false, boolean
// false false, boolean
// Date false
// function false
if (val === undefined)
return true;
if (typeof (val) == 'function' || typeof (val) == 'number' || typeof (val) == 'boolean' || Object.prototype.toString.call(val) === '[object Date]')
return false;
if (val == null || val.length === 0) // null or 0 length array
return true;
if (typeof (val) == "object") {
// empty object
var r = true;
for (var f in val)
r = false;
return r;
}
return false;
}
위에 게시된 많은 솔루션에서 잠재적인 단점이 발견되어 저는 제 자신의 솔루션을 컴파일하기로 결정했습니다.
참고: Array.prototype을 사용합니다.일부, 브라우저 지원을 확인해 보십시오.
아래 솔루션은 다음 중 하나가 참일 경우 변수가 비어 있다고 간주합니다.
- 는 그 가 JS 는합니다와 합니다.
false
와 있습니다.0
,""
,[]
짝수 , ,[""]
그리고.[0]
- 은 ㅇ
null
은'undefined'
- 빈 개체입니다.
개체/배열은 자체가 비어 있는 값으로만 구성됩니다(즉, 각 부분이 동일한 프리미티브로 분해됨).
false
Object/Array 구조로 드릴을 재귀적으로 검사합니다.예.isEmpty({"": 0}) // true isEmpty({"": 1}) // false isEmpty([{}, {}]) // true isEmpty(["", 0, {0: false}]) //true
함수 코드:
/**
* Checks if value is empty. Deep-checks arrays and objects
* Note: isEmpty([]) == true, isEmpty({}) == true, isEmpty([{0:false},"",0]) == true, isEmpty({0:1}) == false
* @param value
* @returns {boolean}
*/
function isEmpty(value){
var isEmptyObject = function(a) {
if (typeof a.length === 'undefined') { // it's an Object, not an Array
var hasNonempty = Object.keys(a).some(function nonEmpty(element){
return !isEmpty(a[element]);
});
return hasNonempty ? false : isEmptyObject(Object.keys(a));
}
return !a.some(function nonEmpty(element) { // check if array is really not empty as JS thinks
return !isEmpty(element); // at least one element should be non-empty
});
};
return (
value == false
|| typeof value === 'undefined'
|| value == null
|| (typeof value === 'object' && isEmptyObject(value))
);
}
여기 저의 가장 간단한 해결책이 있습니다.
PHP에서 영감을 얻었습니다.
empty
기능
function empty(n){
return !(!!n ? typeof n === 'object' ? Array.isArray(n) ? !!n.length : !!Object.keys(n).length : true : false);
}
//with number
console.log(empty(0)); //true
console.log(empty(10)); //false
//with object
console.log(empty({})); //true
console.log(empty({a:'a'})); //false
//with array
console.log(empty([])); //true
console.log(empty([1,2])); //false
//with string
console.log(empty('')); //true
console.log(empty('a')); //false
@SJ00 답변의 더 읽기 쉬운 버전:
/**
* Checks if a JavaScript value is empty
* @example
* isEmpty(null); // true
* isEmpty(undefined); // true
* isEmpty(''); // true
* isEmpty([]); // true
* isEmpty({}); // true
* @param {any} value - item to test
* @returns {boolean} true if empty, otherwise false
*/
function isEmpty(value) {
return (
value === null || // check for null
value === undefined || // check for undefined
value === '' || // check for empty string
(Array.isArray(value) && value.length === 0) || // check for empty array
(typeof value === 'object' && Object.keys(value).length === 0) // check for empty object
);
}
http://underscorejs.org/ # is Empty 참조
isEmpty_.isEmpty(객체) 열거형 개체에 값이 없는 경우 true를 반환합니다( 열거형 고유 속성 없음).문자열 및 배열 유사 개체 _.is Empty는 길이 속성이 0인지 확인합니다.
@inkednm의 답변을 하나의 기능으로 결합:
function isEmpty(property) {
return (property === null || property === "" || typeof property === "undefined");
}
JSON 키의 빈 체크는 사용 사례에 따라 달라집니다.일반적인 사용 사례에 대해 다음 사항을 테스트할 수 있습니다.
- 것은 아니다.
null
- 것은 아니다.
undefined
-
''
-
{}
[]
)
기능:
function isEmpty(arg){
return (
arg == null || // Check for null or undefined
arg.length === 0 || // Check for empty String (Bonus check for empty Array)
(typeof arg === 'object' && Object.keys(arg).length === 0) // Check for empty Object or Array
);
}
다음에 대해 true를 반환합니다.
isEmpty(''); // Empty String
isEmpty(null); // null
isEmpty(); // undefined
isEmpty({}); // Empty Object
isEmpty([]); // Empty Array
변수를 if 조건 안에 넣으십시오. 변수에 값이 있으면 true를 반환하고 그렇지 않으면 false를 반환합니다.
if (response.photo){ // if you are checking for string use this if(response.photo == "") condition
alert("Has Value");
}
else
{
alert("No Value");
};
이렇게 하면 어떨까요?
JSON.stringify({}) === "{}"
내가 여기서 보는 모든 것을 조심해야 합니다.
typeof object === 'object' && Object.keys(object).length === 0)
개체가 비어 있는지 확인하는 중입니다.하지만 당신은 알고 있었나요?Date
v스크립트됩니까?
그렇다면 다음과 같이 하십시오.
const shouldNotbeEmpty = new Date(Date.now())
isEmpty(shouldNotbeEmpty) // this will return true when it should not
수정할 수 있는 유일한 방법은 개체가 Date 인스턴스인지 확인하는 것이었습니다.
typeof value === "object" && Object.keys(value).length === 0 && !value instanceof Date
그래서 이런 식으로.
const isObject = value => typeof value === "object" && Object.keys(value).length === 0
const isString = value => typeof value === "string" && value.trim().length === 0
const isEmpty = value => {
const isDate = value instanceof Date
return value === undefined || value === null || (isObject(value) && !isDate) || isString(value)
}
exports.isEmpty = isEmpty
const isEmpty = value => {
if (!value && value !== 0) return true
if(Array.isArray(value)){
if(!value.length) return true
return value.every(isEmpty)
}
if (typeof value === 'object') {
return Object.values(value).every(isEmpty)
}
return false
}
isEmpty(); // true
isEmpty(undefined); // true
isEmpty(null); // true
isEmpty(0); // false
isEmpty(1); // false
isEmpty(''); // true
isEmpty('a'); // false
isEmpty([]); // true
isEmpty([0]); // false
isEmpty([1]); // false
isEmpty([[]]); // true
isEmpty([[], []]); // true
isEmpty([[], null, undefined]); // true
isEmpty([[], 1]); // false
isEmpty({}); // true
isEmpty({a: 1}); // false
isEmpty({a: 1, b: 2}); // false
isEmpty({a: 1, b: {}}); // false
isEmpty({a: null, b: [], c: undefined}); // true
isEmpty({a: {}, b: {}, c: {}}); // true
isEmpty(() => {}) // false
그것은 "공허하다"는 의미에 따라 다릅니다.가장 일반적인 패턴은 변수가 정의되지 않았는지 확인하는 것입니다.많은 사람들이 널 체크(null check)를 하기도 합니다. 예를 들면 다음과 같습니다.
if (myVariable === undefined || myVariable === null)...
또는 더 짧은 형태로:
if (myVariable || myVariable === null)...
if (myVar == undefined)
var가 선언되었지만 초기화되지는 않았는지 확인합니다.
정의되지 않았는지 확인합니다.
if (typeof response.photo == "undefined")
{
// do something
}
이렇게 하면 vb와 동일한 값을 수행할 수 있습니다.IsEmpty
. myvar에 null, 빈 문자열 또는 0과 같은 값이 포함되어 있으면 "공백"이 아닙니다.
정의되지 않았을 수도 있지만 선언된 것과 같은 변수 또는 속성이 존재하는지 확인하려면in
교환입니다.
if ("photo" in response)
{
// do something
}
만약 당신이 PHP와 동등한 것을 찾고 있다면,empty
function, 이것을 확인해 주십시오.
function empty(mixed_var) {
// example 1: empty(null);
// returns 1: true
// example 2: empty(undefined);
// returns 2: true
// example 3: empty([]);
// returns 3: true
// example 4: empty({});
// returns 4: true
// example 5: empty({'aFunc' : function () { alert('humpty'); } });
// returns 5: false
var undef, key, i, len;
var emptyValues = [undef, null, false, 0, '', '0'];
for (i = 0, len = emptyValues.length; i < len; i++) {
if (mixed_var === emptyValues[i]) {
return true;
}
}
if (typeof mixed_var === 'object') {
for (key in mixed_var) {
// TODO: should we check for own properties only?
//if (mixed_var.hasOwnProperty(key)) {
return false;
//}
}
return true;
}
return false;
}
http://phpjs.org/functions/empty:392
배열을 비우면 무엇이 부족한가요?키리스 오브젝트...false const는 Empty = o = > Array.isArray(o) &!o.join(").length || o === 'object' &!Object.keys(o)의 유형입니다.길이 || !(+value);
빈 변수를 확인할 수 있는 간단한(짧은) 솔루션이 있습니다.이 함수는 변수가 비어 있는지 확인합니다.제공된 변수에는 혼합 값(null, 미정의, 배열, 개체, 문자열, 정수, 함수)이 포함될 수 있습니다.
function empty(mixed_var) {
if (!mixed_var || mixed_var == '0') {
return true;
}
if (typeof mixed_var == 'object') {
for (var k in mixed_var) {
return false;
}
return true;
}
return false;
}
// example 1: empty(null);
// returns 1: true
// example 2: empty(undefined);
// returns 2: true
// example 3: empty([]);
// returns 3: true
// example 4: empty({});
// returns 4: true
// example 5: empty(0);
// returns 5: true
// example 6: empty('0');
// returns 6: true
// example 7: empty(function(){});
// returns 7: false
const isEmpty = val => val == null || !(Object.keys(val) || val).length;
function isEmpty(variable) {
const type = typeof variable
if (variable === null) return true
if (type === 'undefined') return true
if (type === 'boolean') return false
if (type === 'string') return !variable
if (type === 'number') return false
if (Array.isArray(variable)) return !variable.length
if (type === 'object') return !Object.keys(variable).length
return !variable
}
내 솔루션:
function isEmpty(object) {
return (
(!object)
|| (object === undefined)
|| (object === null)
|| (object === '')
|| ((object?.length !== undefined) && (object.length === 0))
|| (typeof object === 'object' && Object.keys(object).length === 0)
);
}
재스트를 사용한 테스트:
describe('isEmpty should return `false` when the parameter have some truthy value.', () => {
test('Empty objects should return true', () => {
expect(utils.isEmpty([])).toBe(true);
expect(utils.isEmpty({})).toBe(true);
expect(utils.isEmpty('')).toBe(true);
expect(utils.isEmpty(undefined)).toBe(true);
expect(utils.isEmpty(null)).toBe(true);
});
test('Truthy objects should return false', () => {
expect(utils.isEmpty([1])).toBe(false);
expect(utils.isEmpty({a: undefined})).toBe(false);
expect(utils.isEmpty({a: 5})).toBe(false);
expect(utils.isEmpty({a: 5, b: 6, c: undefined})).toBe(false);
expect(utils.isEmpty('f00')).toBe(false);
expect(utils.isEmpty('0')).toBe(false);
});
})
var message_1 = message.trim();
if (message_1.length > 0) {
// to do
}
언급URL : https://stackoverflow.com/questions/4597900/checking-something-isempty-in-javascript
'source' 카테고리의 다른 글
우분투에서 mysql 서버를 시작할 수 없습니다. (0) | 2023.10.09 |
---|---|
우커머스 템플릿이 작동하지 않음을 재정의함 (0) | 2023.10.04 |
@change에서 Vue.js get selected 옵션 (0) | 2023.10.04 |
사용자의 선호도에 따라 필터링하는 wrapper printf 기능 (0) | 2023.10.04 |
type constchar* 인수가 type "LPCWSTR" 매개 변수와 호환되지 않습니다. (0) | 2023.10.04 |