2016-07-12 7 views
0

Hei、空の文字列と内容のある文字列を含む配列があります。配列要素のSubstrが空でない場合

空の文字列でない文字の最初の5文字を​​スライスして、新しい配列に入れたいとします。私も空のものを保ちたい。

例:MyArrayという[i]が空である場合、私は内部場合とforループと試み

myArray = [ "","","123456789","","",""]; 
var newArray = ["","","12345","","",""] 

次いで(SUBSTRをしない)が、私はそれが機能しないというエラーを取得します。

私は実際に私がちょうどmyarrayの(I).subsrtスプライスに(5)の値を()入れたい、新しい配列にそれを配置する必要はありませんが、その後、私はエラーを取得する:

VM750:82 Uncaught TypeError: Cannot read property 'substr' of undefined

+2

'(" "、" 123456789 "、" "、" "、" ")map(e => e.substr(0、5))'が動作します。 –

答えて

1

@le_mが言うまさにarray.map

myArray = [ "","","123456789","","",""]; 
var newArray = myArray.map((s) => s.substr(0, 5)) 
+0

これがうまくいった、ありがとう! –

+0

よろしくお願いします。できる場合は受け入れてください.. @BalázsOrbán – webdeb

1

すべてのコードを見ることなくあなたの正確な問題を知るのは難しいですが、ここでは最初の配列のすべての要素を調べるforループがあり、挿入する各文字列の最初の5文字以下をとります新しい配列。

myArray = [ "","","123456789","","",""]; 
var newArray = []; 
for(var i = 0; i < myArray.length; i++) { 
    newArray.push(myArray[i].substr(0,5)); 
} 
1

とES6:

myArray = [ "","","123456789","","",""]; 
var newArray = myArray.map(e => e.substr(0, 5)); 
0

あなたが空でない項目についてSUBSTRを使用する必要があります。

:このよう
myArray = [ "","","123456789","","",""]; 
for(var i = 0; i < myArray.length; i++) { 
    temp = myArray[i]; 
    if (temp && temp != "") 
     myArray[i] = temp.substr(0, 5); 
    else 
     myArray[i] = ""; 
} 
関連する問題