sourcecode

NodeJS에서 JSON이 비어 있는지 확인하려면 어떻게 해야 합니까?

codebag 2023. 2. 27. 22:49
반응형

NodeJS에서 JSON이 비어 있는지 확인하려면 어떻게 해야 합니까?

요청에 쿼리가 있는지 확인하고 그에 따라 다른 작업을 수행하는 기능이 있습니다.저는 지금if(query)다른 걸 해 봐단, 쿼리 데이터가 없는 경우, 저는 최종적으로는{}JSON 오브젝트그렇기 때문에 교환이 필요합니다.if(query)와 함께if(query.isEmpty())뭐 그런 거라도요NodeJS에서 이 작업을 수행할 수 있는 방법을 설명해 주실 수 있습니까?V8 JSON 오브젝트에는 이런 기능이 있습니까?

다음 기능 중 하나를 사용할 수 있습니다.

// This should work in node.js and other ES5 compliant implementations.
function isEmptyObject(obj) {
  return !Object.keys(obj).length;
}

// This should work both there and elsewhere.
function isEmptyObject(obj) {
  for (var key in obj) {
    if (Object.prototype.hasOwnProperty.call(obj, key)) {
      return false;
    }
  }
  return true;
}

사용 예:

if (isEmptyObject(query)) {
  // There are no queries.
} else {
  // There is at least one query,
  // or at least the query object is not empty.
}

다음을 사용할 수 있습니다.

var isEmpty = function(obj) {
  return Object.keys(obj).length === 0;
}

또는 다음과 같습니다.

function isEmpty(obj) {
  return !Object.keys(obj).length > 0;
}

다음 항목도 사용할 수 있습니다.

function isEmpty(obj) {
  for(var prop in obj) {
    if(obj.hasOwnProperty(prop))
      return false;
  }

  return true;
}

언더스코어 또는 jQuery사용하는 경우,isEmpty또는isEmptyObject콜을 클릭합니다.

Object.keys(myObj).length === 0;

오브젝트가 비어 있는지 확인만 하면 되므로 네이티브 메서드 Object.keys(myObj)를 직접 호출하는 것이 좋습니다.length: 내부적으로 for와 반복하여 키 배열을 반환합니다.루프를 이루다~하듯이Object.hasOwnProperty에서는 개체 자체에 존재하는 속성에 따라 부울 결과가 반환됩니다.시간 복잡도 O(N2)가 됩니다.

한편, 그 자체에 2개 이상의 실장이 있는 UDF를 호출하면 작은 오브젝트에서는 정상적으로 동작하지만 이벤트루프에서 대기하고 있는 것이 없는 한 오브젝트사이즈가 클 경우 전체적인 퍼로맨스에 중대한 영향을 미치는 코드를 차단합니다.

와 호환성이 있는 경우Object.keys노드에는 호환성이 있기 때문에 반드시 그것을 사용해야 합니다.

단, 호환성이 없고 어떤 이유로든 루프 기능을 사용할 수 없는 경우에는 저처럼 다음과 같은 솔루션을 사용했습니다.

JSON.stringify(obj) === '{}'

이 솔루션은 필요한 경우에만 '최후의 수단'으로 간주하십시오.

코멘트에서는, 「이 솔루션이 이상적이지 않은 방법은 많이 있습니다」를 참조해 주세요.

최후의 수단을 썼는데 완벽하게 작동했어요

솔루션:

let isEmpty = (val) => {
    let typeOfVal = typeof val;
    switch(typeOfVal){
        case 'object':
            return (val.length == 0) || !Object.keys(val).length;
            break;
        case 'string':
            let str = val.trim();
            return str == '' || str == undefined;
            break;
        case 'number':
            return val == '';
            break;
        default:
            return val == '' || val == undefined;
    }
};
console.log(isEmpty([1,2,4,5])); // false
console.log(isEmpty({id: 1, name: "Trung",age: 29})); // false
console.log(isEmpty('TrunvNV')); // false
console.log(isEmpty(8)); // false
console.log(isEmpty('')); // true
console.log(isEmpty('   ')); // true
console.log(isEmpty([])); // true
console.log(isEmpty({})); // true
const isEmpty = (value) => (
    value === undefined ||
    value === null ||
    (typeof value === 'object' && Object.keys(value).length === 0) ||
    (typeof value === 'string' && value.trim().length === 0)
  )

module.exports = isEmpty;

언급URL : https://stackoverflow.com/questions/11480769/how-can-i-check-if-a-json-is-empty-in-nodejs

반응형