Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.02.2015, 19:26
Кандидат Javascript-наук
Отправить личное сообщение для Cache Посмотреть профиль Найти все сообщения от Cache
 
Регистрация: 02.05.2013
Сообщений: 111

как проверить object на "пустоту"
Привет всем.
Просьба проконсультировать немного по работе с объектами

нагуглил, что для проверки объекта на пустоту, нужно получить его длину
var obj1={};
alert(obj1.length);
var obj2={};
obj2={
param1: 'any_data1',
param2: 'any_data2',
param3: 'any_data3',
};
alert(obj2.length);

но результат: undefined

задача же проверить ассоциативный массив (по сути объект, т.к. в js считается что нет ассоциативных массивов) на пустоту, т.е.:
var arr=[];
arr['param1']='any data1',
arr['param2']='any data2',
arr['param3']='any data3';

alert(arr.length)

результат: 0


пожалуйста, приведите примеры, как правильно проверить как первый вариант на пустоту, так и второй
Ответить с цитированием
  #2 (permalink)  
Старый 06.02.2015, 19:40
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

function isEmpty(object) {
    return JSON.stringify(object) == "{}";
}

var obj1 = {};
var obj2 = { x: 1 };

alert([ isEmpty(obj1), isEmpty(obj2) ]);
Ответить с цитированием
  #3 (permalink)  
Старый 06.02.2015, 19:44
Аспирант
Посмотреть профиль Найти все сообщения от freee
 
Регистрация: 05.02.2015
Сообщений: 51

только без учета прототипов
<html>
<head>
</head>
<body>
<script>
o1={a: 2}
o2={}
a1=[1]
a2=[]

alert([
 JSON.stringify(o1)==="{}",
 JSON.stringify(o2)==="{}",
 JSON.stringify(a1)==="[]",
 JSON.stringify(a2)==="[]",
 +a1,
 +a2
])
</script>
</body>
</html>

Последний раз редактировалось freee, 06.02.2015 в 19:48.
Ответить с цитированием
  #4 (permalink)  
Старый 06.02.2015, 19:44
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Ну либо так:
function isEmpty(object) {
    for (var key in object)
        if (object.hasOwnProperty(key)) return true;

    return false;
}

var arr=[];
arr['param1']='any data1',
arr['param2']='any data2',
arr['param3']='any data3';

alert( isEmpty(arr) );
Ответить с цитированием
  #5 (permalink)  
Старый 06.02.2015, 19:48
Кандидат Javascript-наук
Отправить личное сообщение для Cache Посмотреть профиль Найти все сообщения от Cache
 
Регистрация: 02.05.2013
Сообщений: 111

Sweet, спасибо
Ответить с цитированием
  #6 (permalink)  
Старый 06.02.2015, 19:59
Аспирант
Посмотреть профиль Найти все сообщения от freee
 
Регистрация: 05.02.2015
Сообщений: 51

Sweet,
Только наоборот
Ответить с цитированием
  #7 (permalink)  
Старый 06.02.2015, 20:15
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

ещё:

var isEmptyObject = function (obj) { return Object.keys(obj).length === 0; };
var obj1={};
alert(isEmptyObject(obj1));
var obj2={};
obj2={
param1: 'any_data1',
param2: 'any_data2',
param3: 'any_data3',
};
alert(isEmptyObject(obj2));


o1={a: 2};
o2={};
a1=[1];
a2=[];
alert(isEmptyObject(o1));
alert(isEmptyObject(o2));
alert(isEmptyObject(a1));
alert(isEmptyObject(a2));
Ответить с цитированием
  #8 (permalink)  
Старый 06.02.2015, 20:27
Кандидат Javascript-наук
Отправить личное сообщение для Cache Посмотреть профиль Найти все сообщения от Cache
 
Регистрация: 02.05.2013
Сообщений: 111

melky, спасибо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как проверить, что верхняя граница окна браузера пересекает элемент? Hurray Элементы интерфейса 2 04.04.2014 01:07
как проверить выполнение get() запроса?! Brook jQuery 1 16.02.2013 20:23
Как проверить корректность поля e-mail? daniilino Общие вопросы Javascript 9 15.05.2012 16:50
Как не перезагружать OBJECT nyols (X)HTML/CSS 5 12.09.2011 10:31
Как проверить ссылку на работоспособнось? Oleg_777 Общие вопросы Javascript 23 19.03.2009 18:57