как проверить 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 пожалуйста, приведите примеры, как правильно проверить как первый вариант на пустоту, так и второй |
function isEmpty(object) {
return JSON.stringify(object) == "{}";
}
var obj1 = {};
var obj2 = { x: 1 };
alert([ isEmpty(obj1), isEmpty(obj2) ]);
|
только без учета прототипов
<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>
|
Ну либо так:
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) );
|
Sweet, спасибо
|
Sweet,
Только наоборот |
ещё:
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));
|
melky, спасибо
|
| Часовой пояс GMT +3, время: 11:10. |