Comment faire pour récupérer aléatoire objet JSON par la clé de dictionnaire JSON?
J'ai un objet JSON qui se compose d'une longue liste d'autres objets JSON qui ont en commun certaines propriétés de chaque autres :
var myData = {
"0291" : { "Firstname" : "Jeremy", "Surname" : "Dyson" },
"0398" : { "Firstnname" : "Billy", "Surname" : "Bunter" },
"6714" : { "Firstnname" : "Harry", "Surname" : "Peterson" },
"9080" : { "Firstnname" : "Barry", "secondname": "Joe", "Surname" : "Mainwaring"}
...
...
}
J'ai déjà construit un modèle html. Avec le JS, je veux choisir ou iterate (random pick + boucle) à travers les objets dans les données{} dans ordre aléatoire, afin que je puisse remplir le code HTML à la volée pour chaque visiteur. La partie aléatoire est important, de sorte que chaque visiteur de chance d'obtenir différentes données.
Plaine JavaScript ou jQuery solutions fonctionnent dans le contexte dans lequel ce qui est en cours de déploiement.
EDIT: Solution que j'ai mis en place est ci-dessous.
1. Collecter toutes les clés :
var keyArray = Object.keys(myData);
2. La fonction de lecture aléatoire:
function shuffle(o){ //v1.0
for(var j, x, i = o.length; i; j = parseInt(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
return o;
};
keyArray = shuffle(keyArray); //shuffle it!
3. La boucle pour parcourir:
for (var i = 0; i < keyArray.length; ++i) {
var current = data[keyArray[i]];
... //what you want to do each time.
}
J'ai commencer à coder, j'écris 4000 lignes de base de données lexicale à la main. Pas de fonction aléatoire... encore !
OriginalL'auteur Hugolpz | 2013-02-04
Vous devez vous connecter pour publier un commentaire.
D'abord de convertir le
data
objet d'un tableau (les clés sur le premier niveau sera perdu), comme illustré ici: https://stackoverflow.com/a/11474071/664108Ensuite mélanger le tableau (voir Comment rendre aléatoire (shuffle) un tableau JavaScript?)
Alternativement, vous pouvez simplement mélanger les touches et puis de travailler sur l'objet d'origine. De cette façon, vous avez également toujours les clés:
Plus de commentaires,
la clé de la matrice peut également être créé par:
Mais notez que cela ne fonctionne que sur les navigateurs modernes, vous ne devriez pas l'utiliser si vous voulez en charge d'Internet Explorer dans les versions de IE 8 (voir: http://msdn.microsoft.com/en-us/library/ie/ff688127(v=vs. 94).aspx)
oui, c'est mon deuxième solution
plutôt que : var keyArray = $.carte(données, la fonction (valeur, key) { return key; }); nous allons utiliser : var keyArray = Objet.clés(données);
J'ai voté votre réponse, mais il a accepté ma réponse qui je l'ai fait dans mon code. (note: je n'ai pas de point d'accepter ma propre réponse.)
Et j'ai voté votre commentaire, c'est un bon complément.
OriginalL'auteur Fabian Schmengler
Avez-vous pensez à générer du JSON au hasard déjà ou shufflng? Shuffle en Javascript
Si vous mélangez les ensemble, vous pouvez appliquer foreach et vous obtenez les éléments dans un ordre aléatoire. 🙂
Remarque: Il pourrait être plus rapide à mélanger juste une copie de l'IDs.
Avertissement! Je asuumed que pour votre cas, vous avez juste besoin de Pseudorandomness.
Mario, merci encore. Vos commentaires étaient vraiment adaptées à la begginner je suis, j'ai été à la recherche pour un aléatoire de la fonction, en effet.
vous êtes les bienvenus!
OriginalL'auteur Mario Corchero
utilisation de l'Objet.les touches de fonction
plus: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
OriginalL'auteur KARTHIKEYAN.A