2017-09-28 4 views
0

Comment vérifier si un objet a une certaine clé et ensuite compter la quantité de "valeurs" de cette clé?Vérifiez si une clé d'objet a une propriété si c'est le cas, vérifiez .length sur les valeurs

enter image description here

(affichage de l'image: objet numberOfComments)

Je veux vérifier contre post.id si quelque chose comme.

if (post.id === Object.keys(numberOfComments) { 
    const numOfComment = (numberOfComments Value).length 

    return numOfComment 

} else if (post.id !== Object.keys(numberOfComments) { 
    const numOfComment = 0 
    return numOfComment 
} 

Doit retourner 2 pour ce cas. Une caractéristique importante, bien sûr, est qu'elle doit être dynamique. Le post.id n'est pas toujours le même.

La signification de ceci est de retourner un objet de Redux store vérifier si un article a des commentaires et si oui, afficher le nombre de commentaires.

Merci!

+0

'(numberOfComments Value)' ??? – epascarello

+0

Donc, boucle sur le tableau avec 'some()' et voir qu'il a un ID? – epascarello

+0

Eh bien, était plus un "Je ne sais pas quoi écrire ici" Je veux saisir les valeurs de la clé qui collez la validation, puis vérifier la longueur (combien d'éléments sont stockés sous cette clé) –

Répondre

2

Si vous voulez vérifier si un objet a une propriété, vous pouvez simplement utiliser if(obj[property]). Dans votre cas, vous pourriez facilement condenser votre code ci-dessus en une ligne.

return (numberOfComments[post.id] ? numberOfComments[post.id].length : 0);

+0

Intéressant est appelé à tellement devoir courir. Va vérifier cela quand je reviens, mais il semble que ce que je cherche à archiver –

0

Vous pouvez le faire de cette façon

D'abord, vous vérifiez si votre objet contient la valeur de post.id dans ses clés, puis, si cela est vrai, vous obtenez la valeur de numberOfComments [post.id ] et retourner sa longueur, sinon le post.id n'a pas été trouvé et vous retournez 0.

if(Object.keys(numberOfComments).indexOf(post.id)) { 
    return numberOfComments[post.id].length; 
} else { 
return 0; 
} 

acclamations