2013-06-03 2 views
0

Je travaille avec du code d'un autre développeur et suis tombé sur quelque chose que je n'avais jamais vu auparavant. La fonctionnalité de base du code consiste à rechercher une donnée dans un objet dans un objet. Le format de l'objet est theObj {key:Object, key:Object,...}, les données recherchées sont stockées dans 2 variables inkey, lookfor.Javascript array

$.each(theObj, function(m,n){ 
    if(typeof(n['data'][inkey]) != "undefined" && n['data'][inkey] !== null) { 
     if(n['data'][inkey][lookfor] == 1){..} 
    } 
}); 

Que fait le ['data']?

+11

C'est la même chose que 'n.data'. – mash

+2

C'est la clé de l'objet. Signification n ['data'] signifie obtenir la valeur de la clé (nom de la propriété) dans l'objet n'. –

+1

C'est ce qu'on appelle ** la notation de parenthèse **. Il accède à la propriété 'data' ou à l'objet' n'. Vous le savez déjà depuis les tableaux: 'arr [0]' accède au premier élément du tableau, la propriété '0' du tableau' arr'. –

Répondre

2

n['data'] est identique à n.data mais il est parfois utile d'utiliser des parenthèses comme lorsque vous devez utiliser une variable comme n['data'][inkey].

Btw vous ou lui devez utiliser n.data.hasOwnProperty(inkey) au lieu de typeof(n['data'][inkey]) != "undefined"

Vous pouvez l'écrire comme ça:

$.each(theObj, function(m,n){ 
    if(n.data.hasOwnProperty(inkey) && n.data[inkey] !== null) { 
     if(n.data[inkey][lookfor] == 1){..} 
    } 
}); 
4

Il est à la recherche d'une propriété data dans l'objet n-n['data'] est le même que n.data

1

data est le nom de la propriété ou la clé dans l'objet. Donc, n['data'] retournera la valeur de la propriété pour le nom de la propriété data dans l'objet n.

Et ce que vous avez est un objet pas un tableau.

Array contient la liste des éléments avec un index basé sur un entier, où else Object contient la liste des éléments avec un index basé sur une clé.