Réorganiser Collection avec underscore
-
26-10-2019 - |
Question
Je suis nouveau à souligner si le pardon de mon ignorance.
Y at-il un moyen rapide et facile de faire ce qui suit:
men:{gerald:{"name":"Gerald", "age":50},mike:{"name":"Mike", "age":50},charles:{"name":"Charles", "age":50}}
Si le nom est Mike - ensemble en position 1 (indice 0)
Je veux juste mélanger les éléments de sorte que le premier élément est défini par le nom que je choisis.
Toute aide plus que bienvenue.
La solution
Vous n'avez pas besoin underscore.js. Array.sort
fera l'affaire:
myJson.men.sort(function(a, b) { return b.name == "Mike" })
Ce n'est pas vraiment l'usage modèle de genre, mais il fait le travail.
En outre, votre JSON est invalide. Vous avez besoin de crochets autour du tableau, pas Curly:
{
"men": [{
"name": "Gerald", "age": 50
},{
"name": "Mike", "age": 50
},{
"name": "Charles", "age": 50
}]
}
Edit:
Vous ne pouvez pas « ordre » que JSON. Qu'est-ce que vous demandez à faire est de l'ordre d'un tableau associatif. Cela ne fait aucun sens. Si l'ordre des éléments est important, vous voulez un tableau, pas un objet.
Autres conseils
Depuis _.suffle
brouille tous les éléments, vous aurez besoin de raccorder tous les éléments, mais celui prédéfini, mélangez, et concaténer les éléments brassés à un tableau existant qui contient l'élément prédéfini.
Quelque chose comme:
var orig = [1, 2, 3, 4, 5],
shuffled = [];
shuffled[0] = orig[2]; // 3 is the predefined element
shuffled = shuffled.concat( _.shuffle( orig.slice(0,2).concat( orig.slice(3) ) ) );
qui obtient la matrice sans l'élément prédéfini, la mélange, et concatène à la matrice de shuffled
, qui contient la variable prédéfinie en tant que son premier élément.