Дословно:
(с использованием Firefox v3.6, с for-in
оговорками, как отмечалось ранее
(ОДНАКО приведенное ниже использование может поддерживать for-in
именно для этой цели! То есть перечислять элементы массива, которые НАСТОЯТЕЛЬНО существуют через индекс свойства (ОДНАКО, в частности, свойство array length
НЕ перечисляется в списке свойств for-in
!).).)
(Перетащите следующие полные URI для немедленного тестирования браузера в режиме.)
JavaScript:
function ObjInRA(ra){var has=false; for(i in ra){has=true; break;} return has;}
function check(ra){
return ['There is ',ObjInRA(ra)?'an':'NO',' object in [',ra,'].'].join('')
}
alert([
check([{}]), check([]), check([,2,3]),
check(['']), '\t (a null string)', check([,,,])
].join('\n'));
, который отображает:
There is an object in [[object Object]].
There is NO object in [].
There is an object in [,2,3].
There is an object in [].
(a null string)
There is NO object in [,,].
Морщины: если вы ищете "конкретный" объект, подумайте:
JavaScript: alert({}!={}); alert({}!=={});
И, таким образом:
JavaScript:
obj = {prop:"value"};
ra1 = [obj];
ra2 = [{prop:"value"}];
alert(ra1[0] == obj);
alert(ra2[0] == obj);
Часто ra2
считается "содержать" obj
как буквальную сущность {prop:"value"}
.
Очень грубое, элементарное, наивное (как в коде необходимо повышение квалификации):
JavaScript:
obj={prop:"value"}; ra2=[{prop:"value"}];
alert(
ra2 . toSource() . indexOf( obj.toSource().match(/^.(.*).$/)[1] ) != -1 ?
'found' :
'missing' );
См. Ссылку: Поиск объектов в массивах JavaScript .