2013-05-06 12 views

risposta

25

È possibile utilizzare split() ottenere matrice di stringhe da virgole separati stringa. Se si esegue l'iterazione e si esegue un'operazione matematica sull'elemento dell'array di stringhe, quell'elemento verrà considerato come numero dal cast di esecuzione, ma si dispone ancora di un array di stringhe. Per convertire la stringa int separata da virgola, vedere la modifica .

arr = strVale.split(','); 

Live Demo

var strVale = "130,235,342,124"; 
arr = strVale.split(','); 
for(i=0; i < arr.length; i++) 
    console.log(arr[i] + " * 2 = " + (arr[i])*2); 

uscita

130 * 2 = 260 
235 * 2 = 470 
342 * 2 = 684 
124 * 2 = 248 

Modifica, separati da virgola stringa in int Array Nell'esempio sopra la stringa sono fuso a numeri nell'espressione ma per ottenere l'array int dell'array di stringhe è necessario convertirlo in numero.

var strVale = "130,235,342,124"; 
var strArr = strVale.split(','); 
var intArr = []; 
for(i=0; i < strArr.length; i++) 
    intArr.push(parseInt(strArr[i])); 
+2

questo è sbagliato/solo un passaggio alla soluzione reale. Salverà i numeri come stringhe per l'array, non come numeri interi! – ProblemsOfSumit

+0

questo non corrisponde ai valori INT come richiesto dall'OP – Serge

+0

Ho aggiornato la mia risposta, entrambi avete ragione. Sebbene l'esempio mostri un elemento di matrice di stringhe convertito in numero dovuto all'espressione, ma l'array è di stringa e non di numeri. – Adil

2

Il metodo split() viene utilizzato per dividere una stringa in una matrice di sottostringhe e restituisce il nuovo array.

Syntax: 
    string.split(separator,limit) 


arr = strVale.split(','); 

SEE HERE

2

È possibile dividere e convertire come

var strVale = "130,235,342,124 "; 
var intValArray=strVale.split(','); 
for(var i=0;i<intValArray.length;i++{ 
    intValArray[i]=parseInt(intValArray[i]); 
} 

Ora è possibile utilizzare intValArray in te logica.

14

È possibile utilizzare String split method per ottenere i numeri singoli come una matrice di stringhe. Poi convert them to numbers con l'operatore più unario, la funzione Number o parseInt, e aggiungerli al vostro array:

var arr = [1,2,3], 
    strVale = "130,235,342,124 "; 
var strings = strVale.split(","); 
for (var i=0; i<strVale.length; i++) 
    arr.push(+ strings[i]); 

Oppure, in un unico passaggio, utilizzando Array map per convertirli e applying loro di una sola push:

arr.push.apply(arr, strVale.split(",").map(Number)); 
+0

Uso brillante di 'map()' –

10

è sufficiente utilizzare un paio di metodi per questo, il gioco è fatto!

var strVale = "130,235,342,124"; 
var resultArray = strVale.split(',').map(function(strVale){return Number(strVale);}); 

l'output sarà la matrice di numeri.

+0

non male, ma vedere la mia risposta per un modo meno dettagliato per farlo;) – Serge

11
? "123,87,65".split(",").map(Number) 
> [123, 87, 65] 

Modifica >>

Grazie a @NickN nota! Utilizzando questo approccio, un filtro è applicabile se per es.volere escludere eventuali valori non numerici:

? "123,87,hello,65".split(",").map(Number).filter(x => !isNaN(x)) 
> [123, 87, 65] 
+1

Questo è perfetto! La migliore risposta finora. – Kagawa

+1

Risposta molto bella. Se si desidera escludere valori non numerici, è possibile aggiungere un filtro per NaN: '" 123,87, ciao, 65 ".split (", "). Map (Number) .filter (x => ! isNaN (x)) 'fornisce ' [123, 87, 65] '. – NickN

0

Soluzione:

var answerInt = []; 
var answerString = "1,2,3,4"; 
answerString.split(',').forEach(function (item) { 
    answerInt.push(parseInt(item)) 
}); 
+0

Questa non è una stringa. – delroh

+0

@delroh Sì, è cambiato, grazie! –

Problemi correlati