Newsgroup: it.comp.lang.javascript
Titolo: eccedenze help

Ciao a tutti voi,
non conoscevo questo newsgroup e così ho postato in un newsgroup su
JavaScript in inglese dove, appena ho postato il mio problema, sono
stata accusata di postare compiti scolastici! Ma se siamo a fine
luglio! Mah...
Le spiegazioni che mi sono state fornite, comunque, da qualche utente
più gentile non sono state sufficienti, oppure non mi sono spiegata
bene oppure ho capito male le soluzioni. Insomma, un disastro   :-)
Ci riprovo, sperando di farmi capire.
Presumiamo che da un database io riceva un numero variabile di
records: possono essere 50, 65, 72, ...
A video, però, posso farne "vedere" (sono righe) solo un certo numero,
numero che è fisso (ma che può cambiare nel tempo, secondo esigenze
del committente). Facciamo finta per un attimo che il numero in
questione sia 30.
Cosa devo fare:
devo far sì che le eccedenze (50-30, 65-30, 72-30) vengano distribuite
equamente tra gli item mostrati.
Così, senza entrare nel dettaglio e per rendere la cosa in maniera
"visiva", se per caso il numero fisso fosse 5 e le eccedenze fossero
12, vorrei ottenere un array-modello fatto così:
0,undefined,undefined,undefined,1,undefined,undefined,undefined,
2,undefined,undefined,undefined,3,undefined,undefined,undefined,4
Come vedete, tra un elemento numerico e l'altro ci sono N elementi
undefined:
chiaramente, non sempre il caso sarà così semplice.
Anche spulciando vecchi post, ho messo su questa "soluzione" che per
qualche motivo (forse di arrotondamento) va bene in alcuni casi e
fallisce in altri:
var totaleRisultati = 141;
// numero massimo di item da mostrare
var itemsMaxNumber = 30;
//
var p = totaleRisultati/itemsMaxNumber;
//
var temp = [];
for (i=0; i<itemsMaxNumber; i++) {
        temp[Math.ceil(p*i)] = Math.ceil(p*i);
}
Come potrei fare? Mi sono spiegata bene oppure non si capisce
niente?   :-(
Piperita

 niente?   :-(
come fai a stabilire quali variabili contengono un valore e quali non
sono definite?
Il tuo esempio è fuorviante rispetto alla tesi di partenza. Se ho
capito bene ricevi da database un numero di variabili x ma devi
mostrare solo y variabili.
Dato che y non coincide necessariamente con x può accadere che tu
abbia un resto z.
z deve essere distribuito. Il criterio di distribuzione non è chiaro
perché z può essere un numero inferiore ad y oppure superiore, inoltre
le z variabili contengono un valore o sono indefinite?
z deve essere distribuito partendo dall'inizio o la partenza segue
altri criteri?
Insomma il problema va formulato in modo rigoroso.

> Insomma il problema va formulato in modo rigoroso.
Ciao Oreste e grazie per l'attenzione.   :-)
Supponiamo che io riceva 78 records (un numero a caso).
Il mio intento è quello di non mostrare a video tutti i 78 record, che
si manifestano, ad esempio, come righe di una tabella HTML.
Cosa vorrei fare:
- non voglio elimimare n records in eccesso in maniera random;
- non voglio togliere tutti i record che si trovano "alla fine";
- ma voglio equamente distribuire quelli che sono di troppo, per
quanto equamente sia possibile;
Cosa voglio dire?
Supponiamo che i record da mostrare in maniera fissa (da stampare
sempre) siano 20.
Se i record totali che mi restituisce la query sono uguali o minori di
20, non c'è nessun problema:
il programma fa in modo di stamparli tutti, senza filtri.
Se, però, i record sono 21, uno di questi andrebbe rimosso (e dovrebbe
essere il decimo probabilmente).
E così via, fino all'esempio che facevo prima (molto importante: nel
mio array "il rimosso" deve essere rappresentato da un undefined).
Io dovrei avere, come ulteriore "specifica", sempre il primo e
l'ultimo record come record "da visualizzare" sempre.
Il codice che ho postato fa questo egregiamente in un notevole numero
di casi, ma fallisce miseramente in alcuni altri.   :-(
A me serve un codice in grado di generare un array fatto come quello
postato in precedenza, dove i numeri rappresentano records da mostrare
e gli "undefined" gli spazi che dovevano essere riempiti dai record
eliminati. MI serve così perché il resto del programma sfrutta questa
struttura (che, lo ribadisco, è dinamica) fatta così.
0,undefined,undefined,undefined,1,undefined,undefined,undefined,
2,undefined,undefined,undefined,3,undefined,undefined,undefined,4,...
Spero di essere stata chiara ma se hai perplessità ti prego di farmelo
sapere!    :-)
Grazie !