Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как проверить object на "пустоту" (https://javascript.ru/forum/misc/53512-kak-proverit-object-na-pustotu.html)

Cache 06.02.2015 19:26

как проверить 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


пожалуйста, приведите примеры, как правильно проверить как первый вариант на пустоту, так и второй

Sweet 06.02.2015 19:40

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

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

alert([ isEmpty(obj1), isEmpty(obj2) ]);

freee 06.02.2015 19:44

только без учета прототипов
<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>

Sweet 06.02.2015 19:44

Ну либо так:
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) );

Cache 06.02.2015 19:48

Sweet, спасибо

freee 06.02.2015 19:59

Sweet,
Только наоборот

melky 06.02.2015 20:15

ещё:

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));

Cache 06.02.2015 20:27

melky, спасибо


Часовой пояс GMT +3, время: 17:24.