Longueur d'un tableau associatif javascript
j'ai un js tableau associatif (ou certains préfèrent l'appeler comme un objet) , comme, par exemple
var quesArr=new Array();
quesArr["q101"]="Your name?";
quesArr["q102"]="Your age?";
quesArr["q103"]="Your school?";
y a-t-il une fonction intégrée qui pourrait obtenir la longueur de ce tableau, ou n'importe quelle solution dans jQuery ou autre bibliothèque? Actuellement quesArr.la longueur donnerait 0, comme la plupart d'entre vous devez être au courant.
s'il vous Plaît ne suggérons de parcourir l'ensemble du tableau/objet comme mentionné dans cette question , parce que le tableau/objet que j'ai est très grand.
puis-je continuer?
4 réponses
Non, il n'y a pas de propriété intégrée qui vous indique le nombre de propriétés de l'objet (ce que vous recherchez).
la caractéristique la plus proche à laquelle je peux penser est une ES5 et supérieure, Object.keys
( spec | MDN ), que vous pouvez utiliser comme ceci:
console.log(Object.keys(quesArr).length); // "3"
Object.keys
renvoie un tableau des noms des propriétés énumérables d'un objet. Mais en interne, bien sûr, c'est que boucle que vous ne vouliez pas utiliser (et le polyfill pour cela pour les environnements pre-ES5 utilise une boucle, bien sûr).
il y a aussi une autre fonctionnalité ES5+, Object.getOwnPropertyNames
( spec | MDN ), qui renvoie un tableau des noms de propriétés" propres " de l'objet, qu'ils soient ou non dénombrables.
tous les deux sont soutenu dans n'importe quoi vaguement moderne . IE9+, et les versions de Chrome, Firefox, et Safari depuis au moins 2011.
FWIW, à moins que vous n'utilisiez les caractéristiques Array
de l'objet, n'en faites pas un tableau. À la place:
var quesArr={};
quesArr["q101"]="Your name?";
quesArr["q102"]="Your age?";
quesArr["q103"]="Your school?";
ces clés n'ont pas à être données en caractères de chaîne entre crochets, non plus, si vous ne voulez pas qu'elles le soient (que vous utilisiez un tableau ou un objet simple):
var quesArr={};
quesArr.q101="Your name?";
quesArr.q102="Your age?";
quesArr.q103="Your school?";
Mais vous pouvez utiliser l'autre partition si vous préférez; ils sont exactement équivalent sauf qu'avec la notation pointillée les clés doivent être des identificateurs valides (dans la notation entre crochets ils peuvent être n'importe quoi).
Vous pouvez même le faire:
var quesArr={
q101: "Your name?",
q102: "Your age?",
q103: "Your school?"
};
ou (si les touches n'est pas valide identifiants):
var quesArr={
"q101": "Your name?",
"q102": "Your age?",
"q103": "Your school?"
};
supposons que vous ayez ce qui suit,
var myObject = {}; // denotes an Object is being created
myObject.city = "Chennai";
myObject.state = "Tamilnadu";
myObject.country = "Indian Peninsula";
console.log(myObject.length); // results in undefined
mais, il y a une façon de calculer la longueur dans les navigateurs modernes.(Chrome, FF4+, IE9)
Object.keys(myObject);
// --> ["city", "state", "country"]
Object.keys(myObject).length
// --> 3
on peut aussi traiter la question de la longueur des tableaux associatifs en gardant la trace de la longueur du tableau avec un élément associatif appelé longueur.
alias :
myArray["length"]=0;
comme vous ajoutez ou supprimez des éléments il suffit d'ajouter ou de soustraire de l'élément myArrary["length"]
.
, Alors vous pouvez faire des choses comme:
theLength=myArray.length;
tableau associatif n'a pas de propriété de longueur vous pouvez obtenir la longueur