Обработка 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;