Обработка JavaScript, рассматривая двойные кавычки как пустую строку

Попытка изменить следующую функцию для обработки дополнительных запросов.

функция не работает, когда тип данных является объектом и содержит кавычки, которые должны рассматриваться как пустые

 //try to handle double quotes as empty
 // "\"\""        true, empty string
 // ''''        true, empty string

// test results
//---------------
// []        true, empty array
// {}        true, empty object
// null      true
// undefined true
// ""        true, empty string
// ''        true, empty string
// null      true
// true      false, boolean
// false     false, boolean
// Date      false
// function  false


function empty ( val ) {

  if  (typeof 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 == '' || val.length === 0) // null or empty string 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;
}

1 ответ

Решение

/^(""|'')$/.test(val)

if (/^(""|'')$/.test(val) || val == null || val == '' || val.length === 0)
    return true;

Вы можете сократить свои условия, проверив наличие пустой строки в регулярном выражении:

if (/^(""|''|)$/.test(val) || val == null)
    return true;
Другие вопросы по тегам