Newsgroup: it.comp.lang.javascript
Titolo: toArray

Ho:
var a = '[[["UNO","DUE","",""]],,"TRE",[["TRE"]],0]';
e uso
eval("var b="+a);
per convertirlo in un array b.
Ho possibile ottenere lo stesso risultato in strict mode senza eval?


Dipende dalla compatibilità; se ti va bene puoi usare
 JSON.parse(a);
 
Però sono quasi certo, per prove fatte qualche tempo fa, che non accetta 
",," e neanche ",undefined," ... quindi, sempre se per te è accettabile, 
potresti metterci un null:
 
a=a.replace(/,,/g,",null,");
console.log(JSON.parse(a));
 
Altrimenti devo farti una bella function a manina, esercizio interessante 
per ricorsività.

Cristiano Larghi ha scritto quanto segue il 01/05/2013 11.20>

potrebbe anche andar bene, solo che non va con 3 virgole invece di due:
var a = '[[["UNO","DUE","",""]],,,"TRE",,[["TRE"]],0]';
var res=JSON.parse(a.replace(/,,/g,",null,"));
 

 var res=JSON.parse(a.replace(/,,/g,",null,"));
 
Devi però studiarti un po' di regexp ...
 <
https://developer.mozilla.org/en-US/docs/JavaScript/Guide/
 
Regular_Expressions>
 
Potrebbe andare con un qualcosa del tipo replace(/,(?=,)/g,",null")

 Ho possibile ottenere lo stesso risultato in strict mode senza eval?
 
Premesso che puoi creare un workaround manipolando la stringa come
suggerito da Cristiano, perch� in primo luogo hai una siffatta stringa
invece di avere un formato JSON valido? A mio avviso il problema
andrebbe corretto a monte. Ovvero, invece di avere:  `[,]` dovresti
avere: `[null, null]` o simile.

ZER0 ha scritto quanto segue il 01/05/2013 16.58>

non � nella mi disponibilit� :)

 non � nella mi disponibilit� :)
 
Ovvero? Puoi spiegare un po' meglio?
 

ZER0 ha scritto quanto segue il 01/05/2013 21.09>

Quel tipo di stringa mi � restituito da una chiamata ajax ad un servizio 
internet via addon FF.

 internet via addon FF.
 
Immaginavo fosse un web service esterno, non sotto il tuo controllo, mi
chiedevo quale web service fosse. Puoi fornire il link?

 chiedevo quale web service fosse. Puoi fornire il link?
 
translate.google.com
 
in QTranslate trovi lo script che usa eval.
http://quest-app.appspot.com
 

 
http://quest-app.appspot.com
 
 
Non ho idea di cosa sia, e non vedo esempi online di codice. Non mi è
quindi chiaro: usi le API di Google Translate o questo "QTranslate"?

ZER0 ha scritto quanto segue il 02/05/2013 16.03>

in un file dell'installazione c'è uno script
QTranslate\Services\Google Translate\Service.js
se ricordo bene feci uno script in base ai dati ritornati in ajax da 
google, ma comunque qTranslate contiene un codice simile che fa uso di eval.

 eval.
 
Ma non ho ben capito che c'entri qTranslate in tutto ciò. Usi quello o
lo hai semplicemente portato come esempio?
Da chi, fisicamente, prendi quella stringa? Se ti viene restituita da
Google Translate, dovrebbe essere in JSON valido – eventualmente se non
è cosí puoi forzare il formato dei dati che ti viene restituito, tramite
le loro API, quindi non dovresti aver assolutamente bisogno di alcun
workaround; per questo non capisco da dove nasce la problematica.
 
In ogni caso: è curiosità mia, è ovviamente una cosa che puoi risolvere
con una patch client side, solo che mi stupisce che debba essere usata,
dato che è una stringa JSON non valida, e qualsiasi servizio online che
restituisce JSON – a maggior ragione se da google – lo restituisce in
modo che sia "parsabile" da JSON.parse.
 


mi restituisce una stringa ma JSON.parse non me la riconosce:
http://translate.google.com/translate_a/t?client=t&hl=en&text=Zero
 
riesci a parsare questa stringa in un array&sl=it&tl=en
devo mettere la stringa in
eval("var res = "+txtGoogle);


 
Io cercherei di capire questa chiamata "dove" si colloca, onde evitare
azioni penali da parte di Google (penso sia l'ultima cosa che uno
vorrebbe), nel caso di un uso intensivo.

ZER0 ha scritto quanto segue il 02/05/2013 17.46>

A me non sembra che quella url sia riconducibile alle API che una volta 
erano gratuite ed ora non più.
Queste hanno tutto un loro costrutto di interrogazione e l'inserimento 
della chiave acquistata.
L'url invece è quella usata all'interno della pagina di traduzione di 
Google.
Usanto t invece di j sarebbe più conforme alle chiamate standard. Chissà 
chi usa j.
Peccato non esista un inverso di toText.
Grazie per l'aiuto per lo studio del fenomeno ;)

 Grazie per l'aiuto per lo studio del fenomeno ;)
 
Mi sembrava un esempio da manuale di XY problem.