2016-05-12 13 views
0

Dieser Code nimmt "AK345KJ" und versucht, ["AK 3", "4 5 K", "J"] zurück, aber der Browser gibt undefined in allen Punkten von das Array. Nicht sicher warum. DankGruppe Zeichenfolge in Blöcken von n Zeichen und gelten ersetzen

x = "AK345KJ" 
x.match(/.{1,3}/g).map(function(item) {item.replace(""," "); console.log(item)}) 
+0

No undefineds hier https://jsfiddle.net/j08691/2LjLoe7r/ – j08691

+0

@ j08691: in der Tat, hier gilt das gleiche: http://prntscr.com/b391yz . Irgendeine Änderung, um den gesamten Quellcode zu sehen? Vielleicht ist das Problem woanders? – briosheje

+0

Beachten Sie, dass 'Ersetzen' die ursprüngliche Zeichenfolge nicht ändert. Es gibt eine neue Zeichenfolge zurück. Wenn Sie ein neues Array mit der 'map'-Methode erstellen möchten, sollten Sie einen Wert im Callback zurückgeben. – undefined

Antwort

1

Ihre .map sollten Räume zurückkehren und das Hinzufügen von leicht getan wie in Uzbekjon Antwort gezeigt), Diese ganze denken kann auf zwei Linien reduziert werden anders.

Sie wahrscheinlich so etwas wie dies wollen:

x.match(/.{1,3}/g).map(function(item) {return item.split('').join(' ');}) 
// ["A K 3", "4 5 K", "J"] 
1

Mit match():

var a = "AK345KJ" 
var b = a.match(/(.{1,3})/g); 
alert(b); 

Snippet:

var a = "AK345KJ"; 
 
var res = ""; 
 

 
//to split by fixed width of 3 
 
var b = a.match(/(.{1,3})/g); 
 
//alert(b); 
 

 
//to add spaces 
 
for (ab in b) { 
 
    res = res + (b[ab].split('').join(' ')) + ", "; 
 
} 
 

 
//remove trailing ',' while alert 
 
alert(res.substring(0, res.length - 2));

Mit der Kartenfunktion (

var a = "AK345KJ" 
alert(a.match(/.{1,3}/g).map(function(item) {return item.split('').join(' ');})); 

Snippet:

var a = "AK345KJ" 
 
alert(a.match(/.{1,3}/g).map(function(item) {return item.split('').join(' ');}));

Verwandte Themen