как проверить 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, время: 17:24. |