Konwertuj tablicę liczb całkowitych na tablicę ciągów w JavaScript

85

Mam tablicę jak poniżej:

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

następnie muszę przekonwertować powyższą tablicę, jak poniżej:

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

Jak mogę konwertować? Użyłem tego do autouzupełniania.

gihansalith
źródło
26
sphValues.map(String)
elclanrs
6
@elclanrs Powinieneś to opublikować jako odpowiedź, a nie komentarz
Mr. Alien
7
[1,2,3,4,5].toString().split(",")
Mr_Green
1
@SonalPM Powinieneś polecić markdown, ponieważ masz trudności z opublikowaniem komentarza z linkiem, ponieważ 4 razy opublikowałeś i usunąłeś swój komentarz, teraz 5
Mr. Alien

Odpowiedzi:

196

Możesz użyć map i przekazać konstruktor String jako funkcję, która zamieni każdą liczbę w ciąg:

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

Nie spowoduje to mutacji wartości sphValues. Zwróci nową tablicę.

elclanrs
źródło
6
Nie rozumiem, dlaczego to nie zostało zaakceptowane jako odpowiedź
MarsOne,
3
W przypadku starszych przeglądarek, które nie obsługują Array.map, możesz użyć underscore.js: _.map (sphValues, String)
Jonas Anseeuw
Niestety, spowoduje to również konwersję wartości logicznych na ciągi.
Dev
10

po prostu przy użyciu metod tablicowych

var sphValues = [1,2,3,4,5];   // [1,2,3,4,5] 
sphValues.join().split(',')    // ["1", "2", "3", "4", "5"]
Skiper Skiprovic
źródło
9

Zastosowanie 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"] 

Edycja:
lepiej używać arr.map(String);jako @elclanrs wspomnianego w komentarzach.

Amir Popovich
źródło
6
for(var i = 0; i < sphValues.length; i += 1){
    sphValues[i] = '' + sphValues[i];
}
Anarion
źródło
6

Użyj .map()w tym kontekście, że jest to lepszy ruch, a także możesz zrobić jak poniższy kod, co zwiększy czytelność twojego kodu,

sphValues.map(convertAsString);

function convertAsString(val) {
  return val.toString();
}
Rajaprabhu Aravindasamy
źródło
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);
 }

Możesz użyć tej metody do automatycznego uzupełniania. Myślę, że twój problem zostanie rozwiązany, ale nie będzie konwertować tak, jak chcesz, konwertuje jak

["label": "val1", "label": "val2"]
Saranga
źródło
2

możesz po prostu dodać „”, aby przekonwertować go na typ ciągu.

var sphValues = [1,2,3,4,5];
for(var itr = 0; itr<sphValues.length;itr++){
  sphValues[itr] = '' + sphValues[itr];
}
Ekansh Rastogi
źródło
1

Rozwiązanie ES6

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

xgqfrms
źródło