2015-04-18 20 views
5
var nice = new String("ASH"); 
nice; //String {0: "A", 1: "S", 2: "H", length: 3, [[PrimitiveValue]]: "ASH"} 
var reverseNice = Array.prototype.reverse.call(nice); 
reverseNice.toString(); // "ASH" 

mentre mi aspettavo che reverseNice sia "HSA".new String() non si comporta come un array come oggetto

+0

'new String()' restituirà solo stringa stringa stringa non primitiva. Per quello uso "". –

+1

@ hitman4890 ti dà qualcosa di più vicino a come _JavaScript_ tratta tutte _Strings_ internamente (motivo per cui possiamo accedere alle proprietà su di esse anche se sono valori primitivi) –

risposta

8

Non è possibile apportare modifiche a nice, provarlo;

nice[0] = 'f'; 
nice[0]; // "A" 

Se si volesse utilizzare il metodo Array, convertirlo in un vero array primo

var reverseNice = Array.prototype.slice.call(nice).reverse(); // notice slice 
reverseNice.join(''); // "HSA", notice `.join` not `.toString` 
+2

Sì, le stringhe JavaScript sono immutabili. Si noti inoltre che 'new String()' restituisce un oggetto e 'String()' restituisce un tipo primitivo. –

0

Perché non farlo?

var nice = "ASH".split(""); 
nice; //Array {0: "A", 1: "S", 2: "H", length: 3} 
var reverseNice = nice.reverse(); 
reverseNice.join("").toString(); // "HSA" 

o semplicemente

var nice = "ASH".split(""); 
var reverseNice = nice.reverse().join("").toString(); 
+1

Se si utilizza 'split()', restituisce un oggetto Array. Quindi non hai bisogno di 'Array.prototype.reverse.call (nice);'. Hai solo bisogno di 'var reverseNice = nice.reverse()'. Inoltre non è necessario 'toString()' dopo 'join', poiché' join' restituisce una stringa. –

+0

Sì, l'ho già risolto. ;) –

0

utilizzare il tipo di split e join per convertire string-array, proprio come questo.

var nice = new String("ASH"); 
// create a string 


var result = Array.prototype.reverse.call(nice.split('')).join(''); 
// string can not use the reverse, 
// so we need split it and call the prototype function of Array , 
// and join the result in the end 

console.log(result) 
Problemi correlati