JavaScript'te tamsayı dizisini dize dizisine dönüştürme


88

Aşağıdaki gibi bir dizim var:

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

sonra yukarıdaki diziyi aşağıdaki gibi dönüştürmem gerekiyor:

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

Nasıl dönüştürebilirim? Bunu otomatik tamamlama için kullandım.


27
sphValues.map(String)
elclanrs

6
@elclanrs Bunu bir yorum olarak değil bir cevap olarak göndermelisiniz
Mr. Alien

7
[1,2,3,4,5].toString().split(",")
Mr_Green

1
@SonalPM Bağlantılı bir yorum yayınlamakta zorlandığınız için markdown'a başvurmalısınız, çünkü yorumunuzu 4 kez yayınladınız ve sildiniz, şimdi 5
Bay Alien

Yanıtlar:


201

Sen kullanabilirsiniz harita ve geçiş dize dize içine her numarayı dönecek bir fonksiyonu olarak yapıcısı:

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

Bu, sphValues'i mutasyona uğratmaz. Yeni bir dizi döndürecektir.


6
Bunun neden cevap olarak kabul edilmediğini anlamıyorum
MarsOne

3
Array.map'i desteklemeyen daha eski tarayıcılar için, undercore.js'yi kullanabilirsiniz: _.map (sphValues, String)
Jonas Anseeuw

Ne yazık ki, bu aynı zamanda boole'ları dizelere dönüştürecektir.
Dev

10

Kullanım 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"] 

Düzenleme: Yorumlarda belirtilen @elclanrs
olarak kullanmak arr.map(String);daha iyidir.


10

sadece dizi yöntemlerini kullanarak

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

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

6

.map()Daha iyi bir hareket olan bu bağlamda kullanın , ayrıca aşağıdaki kodu da yapabilirsiniz, bu, kodunuza daha fazla okunabilirlik katacaktır,

sphValues.map(convertAsString);

function convertAsString(val) {
  return val.toString();
}

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);
 }

Otomatik tamamlama için bu yöntemi kullanabilirsiniz. Sanırım problemin çözülecek, ama istediğin gibi dönüşmeyecek, gibi dönüşecek

["label": "val1", "label": "val2"]

2

onu bir dize türüne dönüştürmek için bir '' ekleyebilirsiniz.

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

1

ES6 çözümü

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.