Ciao ragazzi scusate se vi rompo ancora...
Questa volta è un bel problemino e farò fatica anche a spiegarvi il problema:
Io ho una funziona che fa le seguenti "operazioni" nel seguente ordine:
1) vi è un array
2) grazie alla chiamata di un'altra funzione (la funzione "getCombinations") riesco a fare tutte le combinazioni tra gli elementi dell'array.
3) in un ciclo for sono presenti vari metodi che mi permettono, per ogni combinazione, di estrarre ciascun elemento e di dividere il risultato ottenuto per il numero di elementi della combinazione.
Esempio [30,40,50]
Con il punto 3 ottengo come risultato finale = 30 (perché (30+40+50)/3)
4) Poi vi è un IF che dice che se il valore ottenuto è compreso tra due valori, allora viene dichiarata una variabile, a cui viene associato un valore di tipo stringa.
5) Infine si chiude If e si chiude il ciclo for, e prima che venga chiusa la funzione viene dichiarata una variabile dove all'interno vi è la variabile presente nella struttura if.
Ora guardate il codice:
codice:
function ottienivalori() {
var prova = 30;
var arr6s = [[7],[8],[9],[10],[11],[12]]; // questo è l'array
var n6s = 3; // questo valore dice che le combinazioni dovranno essere di 3 elementi
var results6s = getCombinations(arr6s.slice(),n6s); // questa è la funzione per fare le combinazioni
for(var i = 0; i < results6s.length; i++) {
var cs1 = results6s[i].slice(0,1); // tutte queste righe servono solo a far ciò che ho scritto nel
var cs2 = results6s[i].slice(1,2); // punto 3
var cs3 = results6s[i].slice(2,3);
var cs1s = cs1.toLocaleString();
var cs2s = cs2.toLocaleString();
var cs3s = cs3.toLocaleString();
var cs1ss= cs1s.substr(0);
var cs2ss=cs2s.substr(0);
var cs3ss= cs3s.substr(0);
var elem1= parseFloat(cs1ss);
var elem2= parseFloat(cs2ss);
var elem3= parseFloat(cs3ss);
var fine = (elem1+elem2+elem3+elem4+elem5+elem6)/6;
var datoimp6s= (prova-fine);
if (((datoimp6s < 77) && (datoimp6s > 50)) || ((datoimp6s > -77) && (datoimp6s < -50))) {
var back10s = "3"; // quindi se la condizione di if è vera allora viene dichiarata questa variabile
}
else if ((datoimp6s < 43) || (datoimp6s > 47) || (datoimp6s > -43) || (datoimp6s < -47) ) {
var back11s = " "; // altrimenti viene dichiarata questa variabile
}
}// finisce ciclo for
if (back10s==null) { //se invece black10s è nullo, ovvero che tra tutte le combinazioni nessun
var back10s = ' '; //valore di "datoimp6" soddisfa le condizioni dell'if riportato poco più sopra
} // viene dichiarata la variabile black10s ma dando un diverso valore
var allert= '<span>' + back10s + ' ' + back11s + ' ' + datoimp6 + '</span>';
$(allert).appendTo('#moda'); //la variabile verrà inserita nel div "moda".
} // quindi suppongo che nel div moda siano riportati i valori di back10s , di back11s e di datoimp6
// che sono tutti quei valori ottenuti dalle combinazioni e da quelle righe di codice, che soddisfano
// le condizioni della struttura if .
Fino a qui ci siamo e spero ci siate anche voi... perché il problema arriva ora:
io dovrei aggiungere questo pezzo di codice nella funzione di sopra:
codice:
var cros = 30;
var arr6M = [[4],[6],[7],[12],[14],[16]]; // questo è l'array
var n6M = 3; // questo valore dice che le combinazioni dovranno essere di 3 cifre
var results6M = getCombinations(arr6M.slice(),n6M); // questa è la funzione per fare le combinazioni
for(var i = 0; i < results6M.length; i++) {
var cs1m = results6M[i].slice(0,1); // tutte queste righe servono solo a far ciò che ho scritto nel
var cs2m = results6M[i].slice(1,2); // punto 3
var cs3m = results6M[i].slice(2,3);
var cs1sm = cs1m.toLocaleString();
var cs2sm = cs2m.toLocaleString();
var cs3sm = cs3m.toLocaleString();
var cs1ssm= cs1sm.substr(0);
var cs2ssm= cs2sm.substr(0);
var cs3ssm= cs3sm.substr(0);
var elem1m= parseFloat(cs1ssm);
var elem2m= parseFloat(cs2ssm);
var elem3m= parseFloat(cs3ssm);
var finem = (elem1m+elem2m+elem3m+elem4m+elem5m+elem6m)/3;
var drax= (cros+finem);
}
//Quindi in poche parole, questo pezzo è quasi identico alla funzione riportata sopra.
// L'unica differenza è che qui i valori dell'array sono diversi. E ovviamente i valori che ci
// interessano saranno quelli della variabile "drax"
il problema è questo:
io dovrei modificare la struttra if della funzione "ottienivalori" più o meno in questo modo:
codice:
if (((datoimp6s < 77) && (datoimp6s > 50)) || ((datoimp6s > -77) && (datoimp6s < -50))) {
var back10s = "3";
var allerta = drax ; // ECCO LA MODIFICA
}
else if ((datoimp6s < 50) || (datoimp6s > 77) || (datoimp6s > -50) || (datoimp6s < -77) ) {
var back11s = " ";
}
if (back10s==null) {
var back10s = ' ';
}
var allert= '<span>' + back10s + ' ' + back11s + ' ' + datoimp6 + ' ' + allerta + '</span>'; // ECCO LA SECONDA MODIFICA
$(allert).appendTo('#moda');
Quindi se, per quanto riguarda la struttura IF, il valore di datoimp6s è compreso tra quei valori numerici (questa operazione viene ripetuta per ogni combinazione, perché l'if si trova nel ciclo for )
allora deve essere dichiarata la variabile back10s ma anche la variabile allerta.
Alla variabile allerta viene associata la variabile drax.
E la variabile drax è il risultato del pezzo di codice che voglio aggiungere.
Ma io vorrei che vengano aggiunti tutti i valori di drax solo per ogni valore di datoimp6 compreso tra quei valori... Vi faccio un esempio per farmi spiegare :
Dato il seguente codice:
codice:
function ottienivalori() {
var prova = 30;
var arr6s = [[7],[8],[9],[10],[11],[12]];
var n6s = 3;
var results6s = getCombinations(arr6s.slice(),n6s);
for(var i = 0; i < results6s.length; i++) {
var cs1 = results6s[i].slice(0,1);
var cs2 = results6s[i].slice(1,2);
var cs3 = results6s[i].slice(2,3);
var cs1s = cs1.toLocaleString();
var cs2s = cs2.toLocaleString();
var cs3s = cs3.toLocaleString();
var cs1ss= cs1s.substr(0);
var cs2ss=cs2s.substr(0);
var cs3ss= cs3s.substr(0);
var elem1= parseFloat(cs1ss);
var elem2= parseFloat(cs2ss);
var elem3= parseFloat(cs3ss);
var fine = (elem1+elem2+elem3+elem4+elem5+elem6)/6;
var datoimp6s= (prova-fine);
}
}
diciamo che se dovessero essere scritti tutti i valori di datoimp6s avremmo una cosa del genere:
40 //1°
37 //2°
56 //3°
21 //4°
78 //5°
97 //6°
99 //7°
70 //8°
Con la struttura condizionale if solo i seguenti valori andrebbero bene :
56 e 70, ovvero il 3° e l'8° elemento.
Quindi la condizione della struttura if è soddisfatta, pertanto è vera la variabile
var back10s = "3";
e infine nel div moda verrà riportato ciò : 3 - 56 70
Invece dato il seguente codice (che volevo aggiungere) :
codice:
var cros = 30;
var arr6M = [[4],[6],[7],[12],[14],[16]]; // questo è l'array
var n6M = 3; // questo valore dice che le combinazioni dovranno essere di 3 cifre
var results6M = getCombinations(arr6M.slice(),n6M); // questa è la funzione per fare le combinazioni
for(var i = 0; i < results6M.length; i++) {
var cs1m = results6M[i].slice(0,1); // tutte queste righe servono solo a far ciò che ho scritto nel
var cs2m = results6M[i].slice(1,2); // punto 3
var cs3m = results6M[i].slice(2,3);
var cs1sm = cs1m.toLocaleString();
var cs2sm = cs2m.toLocaleString();
var cs3sm = cs3m.toLocaleString();
var cs1ssm= cs1sm.substr(0);
var cs2ssm= cs2sm.substr(0);
var cs3ssm= cs3sm.substr(0);
var elem1m= parseFloat(cs1ssm);
var elem2m= parseFloat(cs2ssm);
var elem3m= parseFloat(cs3ssm);
var finem = (elem1m+elem2m+elem3m+elem4m+elem5m+elem6m)/3;
var drax= (cros+finem);
}
se dovessimo scrivere tutti i valori di drax avremmo una cosa del genere :
20 //1°
17 //2°
5 //3°
11 //4°
38 //5°
9 //6°
62 //7°
70 //8°
quando ho detto che vorrei modificare l'if in questo modo :
codice:
if (((datoimp6s < 77) && (datoimp6s > 50)) || ((datoimp6s > -77) && (datoimp6s < -50))) {
var back10s = "3";
var allerta = drax ; // ECCO LA MODIFICA
}
//ecc ecc
var allert= '<span>' + back10s + ' ' + back11s + ' ' + datoimp6 + ' ' + allerta + '</span>';
$(allert).appendTo('#moda');
}
intendevo dire che per i valori di datoimp6s che soddisfano le condizioni di if , quindi in questo caso:
56 //3° elemento
70 //8° elemento
devono essere riportati i valori di drax. Ma quali valori ???? Semplice.... il 3° elemento e l'8° elemento. Quindi :
5
70
Avete una mezza idea di come si possa risolvere questo problema ????
Mi scuso per l'immensa lunghezza del post e per non essermi spiegato, malgrado le mie buone intenzioni, in maniera decente.
Confido in voi
Grazie mille in anticipo...