我的代码使用大量较小图片构建的视频游戏制作地图。
现在问题是在最后一个循环中插入一个空值的图像。我真的不明白我在这里做错了什么。
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 :(得分: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个字符的块等方式获取匹配),但由于我对你使用它的内容一无所知,我会留给你。
我希望有所帮助。 :)
答案 1 :(得分:0)
/.{1,2}/g
匹配包含任何字符的任何单词(最多2个字符),包括空格。
为了避免空字符串匹配,您需要更改:
if (value.length == 0) {
在trim之前添加:
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>