Convierta una matriz de enteros en una matriz de cadenas en JavaScript

85

Tengo una matriz como la siguiente:

var sphValues = [1, 2, 3, 4, 5];

entonces necesito convertir la matriz anterior como la siguiente:

var sphValues = ['1', '2', '3', '4', '5'];

¿Cómo puedo convertir? Usé esto para autocompletar.

Gihansalith
fuente
26
sphValues.map(String)
elclanrs
6
@elclanrs Deberías publicar eso como una respuesta y no como un comentario
Mr. Alien
7
[1,2,3,4,5].toString().split(",")
Mr_Green
1
@SonalPM Debe referirse a Markdown ya que está teniendo dificultades para publicar un comentario con un enlace, porque publicó y eliminó su comentario 4 veces, ahora 5
Mr. Alien

Respuestas:

196

Puede usar map y pasar el constructor String como una función, que convertirá cada número en una cadena:

sphValues.map(String) //=> ['1','2','3','4','5']

Esto no mutará sphValues. Devolverá una nueva matriz.

elclanrs
fuente
6
No entiendo por qué esto no ha sido aceptado como respuesta
MarsOne
3
Para los navegadores más antiguos que no admiten Array.map, puede usar underscore.js: _.map (sphValues, String)
Jonas Anseeuw
Desafortunadamente, esto también convertirá los valores booleanos en cadenas.
Dev hace
10

solo usando métodos de matriz

var sphValues = [1,2,3,4,5];   // [1,2,3,4,5] 
sphValues.join().split(',')    // ["1", "2", "3", "4", "5"]
Esquiador Skiprovic
fuente
9

Utilizar Array.map:

var arr = [1,2,3,4,5];
var strArr = arr.map(function(e){return e.toString()});
console.log(strArr); //["1", "2", "3", "4", "5"] 

Editar: es
mejor usarlo arr.map(String);como @elclanrs mencionado en los comentarios.

Amir Popovich
fuente
6
for(var i = 0; i < sphValues.length; i += 1){
    sphValues[i] = '' + sphValues[i];
}
Anarion
fuente
6

Úselo .map()en este contexto que es un movimiento mejor, así como puede hacer como el código a continuación, esto agregaría más legibilidad a su código,

sphValues.map(convertAsString);

function convertAsString(val) {
  return val.toString();
}
Rajaprabhu Aravindasamy
fuente
3
 var value;
 for (var i = 0; i < data3.sph.length; i++) {
     value = data3.sph[i];
     //sphValues[i] = data3.sph[i];
     var obj = {
         label: value
     };
     sphValues.push(obj);
 }

Puede utilizar este método para completar automáticamente. Creo que tu problema se resolverá, pero no se convertirá como quieres, se convertirá como

["label": "val1", "label": "val2"]
Saranga
fuente
2

simplemente puede agregar un '' para convertirlo en un tipo de cadena.

var sphValues = [1,2,3,4,5];
for(var itr = 0; itr<sphValues.length;itr++){
  sphValues[itr] = '' + sphValues[itr];
}
Ekansh Rastogi
fuente
1

Solución ES6

const nums = [1, 2, 3, 4, 5];
const strs = Array.from(nums.join(``));
console.log(strs);

xgqfrms
fuente