Je reçois un tableau avec un nombre inconnu de données. Mais je n'ai qu'une quantité prédéfinie de données à afficher/stocker. Comment puis-je prendre chaque nième élément du tableau initial et le réduire en JavaScript ?
Par exemple : J'obtiens un tableau avec size=10000, mais je ne peux afficher que n=2k Elements.
Je l'ai essayé comme ça: delta= Math.round(10*n/size)/10 = 0.2 -> prendre chaque 5ème élément du tableau initial.
for (i = 0; i < oldArr.length; i++) {
arr[i] = oldArr[i].filter(function (value, index, ar) {
if (index % delta!= 0) return false;
return true;
});
}
Avec 0,2, c'est toujours 0, mais avec d'autres deltas (0,3), cela fonctionne. Idem pour delta=0.4, i fonctionne, mais chaque second Element est pris avec ça. Que puis-je faire pour que cela fonctionne ?
Solution du problème
Peut-être une solution:
évitez le filtre car vous ne voulez pas boucler plus de 10 000 éléments! il suffit d'y accéder directement avec une boucle for!
var log = function(val){document.body.innerHTML+='<div></pre>'+val+'</pre></div>'}
var oldArr = [0,1,2,3,4,5,6,7,8,9,10]
var arr = [];
var maxVal = 5;
var delta = Math.floor( oldArr.length / maxVal );
// avoid filter because you don't want
// to loop over 10000 elements!
// just access them directly with a for loop!
// |
// V
for (i = 0; i < oldArr.length; i=i+delta) {
arr.push(oldArr[i]);
}
log('delta: ' + delta + ' length = ' + oldArr.length);
log(arr);
Aucun commentaire:
Enregistrer un commentaire