关于数组/正则表达式的问题

时间:2011-05-17 18:08:39

标签: javascript jquery regex arrays split

var icons = $(".IT_Icon").text().trim().split(",");

在上面,元素文本的部分(逗号之间)被分解并存储在数组中。如果我想对源列表中的项目进行换行或追加或执行任何操作,我该怎么做?

例如:

之前:

[cat, dog, mouse, elephant, lion, bird]

之后:

<img src="cat"/>, <img src="dog"/>, <img src="mouse"/>, <img src="elephant"/>, <img src="lion"/>, <img src="bird"/>

第二个想法,我不能只有一个正则表达式找到列表的“部分”,逗号之间有什么,并用我需要的东西补充它?无论是包装还是替换?

ANSWER

这就是我最终的结果:

$(".IT_badge").each(function () {
    var badges = $(this).text().trim().split(",");

$(this).html("");

    for (i = 0; badges.length > i; i++) {
        $(this).append($("<img/>").attr("src", 'IT_Badges/' + badges[i] + '.png'));

        if (!(badges.length === i+1)) {
            $(this).append(", ");           
        }
    }


});

4 个答案:

答案 0 :(得分:4)

我最喜欢的方法就是:

str = '<img src="' + ary.join('"/><img src="') + '"/>';

将为您提供单个图像标记字符串。如果你想在jQuery中做这件事,比如:

(".IT_Icon").each(function(){
    var $this = $(this);
    $this.html('<img src="' + $this.text() + '"/>');
});

你想要一个字符串吗?修改HTML?

答案 1 :(得分:1)

我建议您使用Array.prototype.map,如果您的浏览器不支持,可以轻松创建。{/ p>

if (!Array.prototype.map)
{
  Array.prototype.map = function(fun /*, thisp */)
  {
    "use strict";

    if (this === void 0 || this === null)
      throw new TypeError();

    var t = Object(this);
    var len = t.length >>> 0;
    if (typeof fun !== "function")
      throw new TypeError();

    var res = new Array(len);
    var thisp = arguments[1];
    for (var i = 0; i < len; i++)
    {
      if (i in t)
        res[i] = fun.call(thisp, t[i], i, t);
    }

    return res;
  };
}

然后你可以像这样使用它:

var newIcons = icons.map(function(v) {
    return "<img src='" + v + ".png' />";
});

答案 2 :(得分:1)

您可以使用jQuery.map()功能:

var s1 = [cat, dog, mouse, elephant, lion, bird];
var s2 = $.map(s1, function(x) {
  var img = new Image();
  img.src = x;
  return img;
});
s2; // => [<img src="cat"/>, <img src="dog"/>, ..., <img src="bird"/>];

答案 3 :(得分:0)

这样的东西?

var icons = $(".IT_Icon").text().trim().split(",");

$.each(icons, function(i, e){
    $("#container").append($("<img/>", { src: $.trim(e) }));
});

http://jsfiddle.net/hunter/e8Vhj/