No hay llamadas directas de "longitud" o "tamaño", debe probar las claves disponibles dentro del objeto.
Tenga en cuenta que todo JavaScript objetos son matrices asociativas (mapas), por lo que su código, probablemente sería mejor usar un objeto genérico en lugar de una matriz:
var testarray = {}; // <= only change is here
testarray['one'] = '1';
testarray['two'] = '2';
testarray['three'] = '3';
Usted puede averiguar lo que las llaves están en un objeto utilizando for..in
:
var name;
for (name in testarray) {
// name will be 'one', then 'two', then 'three' (in no guaranteed order)
}
... con la que se puede construir una función para comprobar si el objeto está vacío.
function isEmpty(obj) {
var name;
for (name in obj) {
return false;
}
return true;
}
Como CMS marcada en su respuesta, que le guiará a través de todas las claves, incluyendo teclas de prototipo del objeto. Si sólo desea teclas del objeto y no su prototipo, utilizar el incorporado en hasOwnProperty
función:
function isEmpty(obj) {
var name;
for (name in obj) {
if (obj.hasOwnProperty(name)) {
return false;
}
}
return true;
}
víctima; buena respuesta @ http://stackoverflow.com/questions/5223/length-of-javascript-associative-array –
JavaScript no tiene "matrices asociativas", tiene "matrices" y "objetos". Si desea usar propiedades con nombre, use un objeto simple ('{}') que no sea una matriz. – Quentin
@David: punto semántico, pero lo diría al revés: ** Todos los objetos ** JavaScript son matrices asociativas (no solo el tipo 'Array', aunque por supuesto también). Tienen claves de cadena que se pueden enumerar, entradas que pueden agregarse y eliminarse ('delete') ad hoc, etc. (Está de acuerdo en que si no está usando índices numéricos, no quiere usar un' Array' .) –