[
0: {"carrier": "Spicejet", "value": 2596},
1: {"carrier": "Indigo", "value": 3000},
2: {"carrier": "Indigo", "value": 5500},
]
4 Réponses :
Vous pouvez trier le tableau, de cette façon que le premier élément deviendrait le plus petit et le dernier sera le plus grand. P>
et par support, je suppose que vous souhaitez que la moyenne que vous puissiez faire cela en ajoutant tous les éléments et en la divisant par la longueur du tableau. P>
Que voulez-vous dire exactement par support?
const getMax = () => {
let max = 0
for( let i = 0; i < arr.length; i++) {
if ( !isNaN(x[i].value) && max < x[i].value) max = x[i].value
}
return max
}
const getMin = () => {
let min = 0
for( let i = 0; i < arr.length; i++) {
if ( !isNaN(x[i].value) && min > x[i].value) min = x[i].value
}
return min
}
valeur moyenne .. [3: {"porteur": "indigo", "valeur": 3000}],
moyenne = (min + max) / 2
Vous pouvez le faire.
p> var arr = [
{"carrier": "Spicejet", "value": 2596},
{"carrier": "Spicejet", "value": NaN},
{"carrier": "Spicejet", "value": 2864},
{"carrier": "Indigo", "value": 3000},
{"carrier": "Indigo", "value": 5500},
{"carrier": "Indigo", "value": 4500}
]
var filteredArr = arr.filter(i=> i.value && i.value!==0).sort((a, b) => a.value - b.value); //Remove falsy values except 0 and sort the array
const lowest = filteredArr[0];
const highest = filteredArr[filteredArr.length-1];
const medium = filteredArr[Math.floor(filteredArr.length/2)]
const res = [lowest, medium, highest];
console.log(res)
Cela ne fonctionne pas correctement. Nan n'est pas traité correctement.
@ user120242 mise à jour. Merci
Essayez ceci s'il vous plaît
p>
var arr = [
{"carrier": "Spicejet", "value": 2596},
{"carrier": "Spicejet", "value": NaN},
{"carrier": "Spicejet", "value": 2864},
{"carrier": "Indigo", "value": 3000},
{"carrier": "Indigo", "value": 5500},
{"carrier": "Indigo", "value": 4500}
], lowest, highest, medium, dump = [], i, x=0;
// Loop and save to dump to we can handle it
for(i=0; i<arr.length; i++)
{
// If object not exists
if(typeof arr[i].value == "undefined") continue;
// Check the bad values
if(null === arr[i].value || isNaN(arr[i].value) || false === arr[i].value || arr[i].value == undefined) continue;
// Save to dump
dump[x]=Number(arr[i].value);
x++;
}
// Sort it
dump.sort();
// lowest
lowest = dump.shift();
// medium
medium = dump[Math.floor(dump.length / 2)];
// highest
highest = dump.pop();
console.log(lowest);
console.log(medium);
console.log(highest);Tri de cette façon, c'est un peu inutile. Plus op souhaite que les objets dans le jeu de résultats, pas les valeurs. Pour obtenir cela, vous devrez écrire plus loin la logique.
Belle solution. Une seule chose, le filtrage et la cartographie de la partie numéro peuvent être effectués à l'aide de la carte code>. Ce sera juste benne = arr.map (({valeur}) => valeur) .Filter (booléen) .sort () code>.
Pourquoi utilisez-vous toujours math.max et math.min si vous avez triché le tableau? Juste pop () et shift (). @Abgr 3000 est la médiane. TRY () est le moyen le plus simple d'obtenir la médiane, à trouver de la recherche et de la mise en œuvre d'un algorithme de sélection médian (par exemple, O (N)).
@gorak qui pourrait échouer. Il va supprimer 0 valeurs. Son filtre est plus correct.
@ user120242, à droite, puis nous devons être spécifiques === nan code>. Bonne prise cependant. :)
@ User120242 Je disais simplement à obtenir toutes les valeurs, puis à les trier, puis à trouver les bons objets basés sur eux pourraient être un peu surchargés lorsque le tri peut être fait dans la gamme d'objets en fonction de leur valeur.
Le titre est "Comment pourrais-je obtenir la plus haute valeur la plus basse et moyenne d'un tableau" et je ne lui donne que des valeurs. Je mettais à jour mon code mais je reste toujours derrière. C'est des bases et il peut lui adapter comment il veut. Réponse de @Abgr est une excellente solution pour obtenir un résultat basé sur des objets.
S'il vous plaît ajoutez votre essai.
Vous avez une NAN là-bas. Est-ce intentionnel? Aussi c'est pas i> JSON. C'est la sortie d'affichage de la variable de débogueur.
Voulez-vous dire médiane?