2011-08-16 20 views
5

¿hay alguna manera de encontrar el número de hijos en un objeto javascript que no sea ejecutando un bucle y usando un contador? Puedo aprovechar jquery si ayuda. Estoy haciendo esto:javascript cómo encontrar el número de hijos en un objeto

var childScenesObj = []; 
var childScenesLen = scenes[sceneID].length; //need to find number of children of scenes[sceneID]. This obviously does not work, as it an object, not an array. 


for (childIndex in scenes[sceneID].children) { 
    childSceneObj = new Object(); 
    childSceneID = scenes[sceneID].children[childIndex]; 
    childSceneNode = scenes[childSceneID]; 
    childSceneObj.name = childSceneNode.name; 
    childSceneObj.id = childSceneID; 
    childScenesObj .push(childSceneObj); 
} 
+1

esperando a saltar sobre respuestas basadas jquery ... – jondavidjohn

+0

Usted está haciendo una nueva 'childScenesObj' en cada iteración del bucle, a continuación, empujándola sobre sí mismo. No creo que esto vaya a funcionar. Necesitas otra 'var' allí –

+0

Puedo usar jquery. – mheavers

Respuesta

25

las siguientes obras en ECMAScript5 (Javascript 1,85)

var x = {"1":1, "A":2}; 
Object.keys(x).length; //outputs 2 
+0

+1 para eso! Gran descubrimiento! – Brian

0

Si ese objeto es en realidad una matriz, .length siempre te llevará el número de índices. Si se refiere a un objeto y que desea obtener el número de atributos/llaves en el objeto, no hay manera que conozco para que, aparte de un contador:

var myArr = []; 
alert(myArr.length);// 0 
myArr.push('hi'); 
alert(myArr.length);// 1 

var myObj = {}; 
myObj["color1"] = "red"; 
myObj["color2"] = "blue"; 

// only way I know of to get "myObj.length" 
var myObjLen = 0; 
for(var key in myObj) 
    myObjLen++; 
+0

Necesita filtrar propiedades enumerables del prototipo en ese bucle 'for ... in' utilizando [' Object.hasOwnProperty'] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/ Object/hasOwnProperty). –

+0

¿Puedes publicar un violín que demuestre la necesidad? Nunca se encuentre con un problema con la enumeración clave antes ... estaría muy interesado en verlo ... – Brian

+0

http://jsfiddle.net/mattball/YkXzU/ ¿Me da un regalo ahora? –

Cuestiones relacionadas