Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Проверка - наполнен ли хэш


Автор: InfMag 7.8.2009, 10:52
Всем доброго времени суток! Я пишу себе "боепакет" функций, дабы в будущем использовать уже набитый набор. Вот пишу функцию для проверки, заполнена ли переменная, но возникла загвоздка с объектами, если объявлена какая-нибудь var vv = new Object(); то определить заполнена ли она также как массив не получается, вообще не знаю как определить хэш как тип, чтобы отличать его от массива. Вот что уже есть:
Код

function is_set(variable) // Проверка на существование переменной.
{
    return (typeof(variable) != "undefined");
}

function is_filled(variable) // Проверка - заполнена ли переменная, также проверяет существует ли она дабы избежать ошибок.
{
    if (typeof(variable)=="object") // для массивов
        return (is_set(variable) && variable.length>0);
    else if (typeof(variable)=="boolean") // для флагов
        return (is_set(variable) && (variable===true||variable===false));
    else if (typeof(variable)=="number") // для чисел
        return (is_set(variable) && parseInt(variable)===variable);
    else // для строк, так же будет применяться ко всему остальному
        return (is_set(variable) && variable!="");
}

Автор: InfMag 7.8.2009, 14:41
Сделал несколько изощрённым способом сам, зато работает!
Код

function is_set(variable) // Проверка на существование переменной.
{
    return (typeof(variable) != "undefined");
}

function is_filled(variable) // Проверка - заполнена ли переменная, также проверяет существует ли она дабы избежать ошибок.
{
    var object_filled = false;
    if (is_set(variable))
    {
        if (typeof(variable)=="object") { // для массивов и объектов
            if (variable.length>0) return true; else {
                for (var k in variable) if (!object_filled) object_filled = true;
                return object_filled;
            }
        } else if (typeof(variable)=="boolean") // для флагов
            return (variable===true||variable===false);
        else if (typeof(variable)=="number") // для чисел
            return (parseInt(variable)===variable);
        else // для строк, так же будет применяться ко всему остальному
            return (variable!="");
    } else return false;
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)