source

무언가를 확인하는 것이 자바스크립트에서 비어 있습니까?

ittop 2023. 10. 4. 23:00
반응형

무언가를 확인하는 것이 자바스크립트에서 비어 있습니까?

자바스크립트에서 변수가 비어있는지 확인하려면 어떻게 해야 합니까?

if(response.photo) is empty {
    do something
else {
    do something else
}

response.photoJSON에서 온 것인데, 가끔은 비어있을 수도 있고, 데이터 셀이 비어있을 수도 있습니다!비어 있는지 확인하고 싶습니다.

빈 문자열을 테스트하는 경우:

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을 사용합니다.일부, 브라우저 지원을 확인해 보십시오.

아래 솔루션은 다음 중 하나가 참일 경우 변수가 비어 있다고 간주합니다.

  1. 는 그 가 JS 는합니다와 합니다.false 와 있습니다.0,"",[] 짝수 , ,[""]그리고.[0]
  2. 은 ㅇnull'undefined'
  3. 빈 개체입니다.
  4. 개체/배열은 자체가 비어 있는 으로만 구성됩니다(즉, 각 부분이 동일한 프리미티브로 분해됨).falseObject/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 키의 빈 체크는 사용 사례에 따라 달라집니다.일반적인 사용 사례에 대해 다음 사항을 테스트할 수 있습니다.

  1. 것은 아니다.null
  2. 것은 아니다.undefined
  3. ''
  4. {} [] )

기능:

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)개체가 비어 있는지 확인하는 중입니다.하지만 당신은 알고 있었나요?Datev스크립트됩니까?

그렇다면 다음과 같이 하십시오.

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와 동등한 것을 찾고 있다면,emptyfunction, 이것을 확인해 주십시오.

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

반응형