2016-12-30 11 views
1

私のコードは、大量の小さな画像で構築されたビデオゲームから地図を作成します。変数が空のときにJQueryループが終了しますか?

ここで問題は最後のループで、空の値を持つ画像を挿入することです。私はここで間違っていることを本当に理解していません。

var str = $('#tool').html(); 
var res = str.match(/.{1,2}/g); 

$.map(res, function(value) { 
    if (value.length == 0) { 
     return; 
     } 
    $("div#tool").append('<img src="Images/Woods/' + value + '.png" />'); 
}); 

答えて

0

regex

/.{1,2}/g 

マッチは任意の文字を含む任意の単語(最大2文字)は、スペースが含まれています。

if (value.length == 0) { 

trim前に追加:注文TOIで

は空の文字列を変更する必要が一致しないよう

value = value.trim(); 

例:

$.map(" 123 4 5 5 a a ".match(/.{1,2}/g), function(value) { 
 
    value = value.trim(); 
 
    if (value.length > 0) { 
 
    $("div#tool").append('< img src="Images/Woods/' + value + '.png" /><br/>'); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 

 
<div id="tool"></div>

+0

これは完全に今トリムメソッドで動作し、私はまた、他の問題を避けるために、正規表現を変更する必要があります、おかげで割当てる! –

1

jQuery Mapは、新しい配列を作成しようとしているわけではないので、ここで使用したいものではありません。

代わりに単純なforループを使用する必要があります。

var str = $('#tool').html(); //Note that .text() might actually work better here 
          //if you don't want any html tags. 
var res = str.match(/.{1,2}/g); 

for (var i = 0; i < res.length; i++) { 
    var value = res[i]; 
    if (value.length > 0) { 
     $("div#tool").append('<img src="Images/Woods/' + value + '.png" />'); 
    } 
} 

私は(それが空白文字に一致し、それはなど、1または2文字のチャンクで試合をつかむだろう)も、あなたの正規表現について一定ではないんだけど、私はあなたが使用しているかについて何も知らないので、それで、私はあなたにそれを残すでしょう。

私は役立つことを願っています。 :)

関連する問題