Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 关于数组/正则表达式的问题_Javascript_Jquery_Regex_Arrays_Split - Fatal编程技术网

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

Javascript 关于数组/正则表达式的问题,javascript,jquery,regex,arrays,split,Javascript,Jquery,Regex,Arrays,Split,上面,元素的部分文本(逗号之间)被分解并存储在一个数组中。如果我想对源列表中的某个项进行包装、追加或执行任何操作,我将如何执行 例如: 之前: var icons = $(".IT_Icon").text().trim().split(","); 之后: [cat, dog, mouse, elephant, lion, bird] , 再想一想,难道我不能用一个正则表达式来查找列表的“部分”,逗号之间是什么,并用我需要的任何东西来补充它吗?是包装还是替换 答复 这就是我的结局: <

上面,元素的部分文本(逗号之间)被分解并存储在一个数组中。如果我想对源列表中的某个项进行包装、追加或执行任何操作,我将如何执行

例如:

之前:

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"/>
$(.IT_-badge”)。每个(函数(){
var-badges=$(this.text().trim().split(“,”);
$(this.html(“”);
对于(i=0;徽章.length>i;i++){

$(this).append($)(“我建议您使用
Array.prototype.map
,如果浏览器不支持它,您可以轻松创建它

$(".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(", ");           
        }
    }


});
if(!Array.prototype.map)
{
Array.prototype.map=函数(fun/*,thisp*/)
{
“严格使用”;
if(this==void 0 | | this==null)
抛出新的TypeError();
var t=对象(本);
var len=t.length>>>0;
如果(乐趣的类型!=“功能”)
抛出新的TypeError();
var res=新阵列(len);
var thisp=参数[1];
对于(变量i=0;i
然后你可以这样使用它:

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(函数(v){
返回“”;
});

我最喜欢的方法是:

var newIcons = icons.map(function(v) {
    return "<img src='" + v + ".png' />";
});
str='';
这将为您提供一个图像标记字符串。如果要在jQuery中执行此操作,请执行以下操作:

str = '<img src="' + ary.join('"/><img src="') + '"/>';
(“.IT_图标”)。每个(函数(){
var$this=$(this);
$this.html(“”);
});
是否尝试获取字符串?修改HTML?

您可以使用以下函数:

(".IT_Icon").each(function(){
    var $this = $(this);
    $this.html('<img src="' + $this.text() + '"/>');
});
var s1=[猫、狗、老鼠、大象、狮子、鸟];
变量s2=$.map(s1,函数(x){
var img=新图像();
img.src=x;
返回img;
});
s2;/=>[,…,];
像这样的东西

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"/>];
var icons=$(“.IT_Icon”).text().trim().split(“,”);
$。每个(图标、功能(即){
$(“#容器”)。附加($(“

包装一件物品是什么意思?有多种方法可以做到这一点,但更多的信息会很有用。您如何决定替换哪一种?在本例中,是否将“大象”替换为“猜测”,是否将第四个条目替换为GUESS?等。然后,在替换后如何处理该条目?目的只是更新span中的文本吗?您是否试图替换span中的文本?@hunter@Felix Kling-我最终希望将逗号列表中的单词“转换”为图标,因此我希望在img scr中“包装”单词=“'+word+”"/>。我强烈建议使用
$.map
\.map
而不是扩展
数组。prototype
@Raynos-此方法的优点是任何本机实现都会非常快。Firefox 3.5+本机支持此功能,而IE9+则支持此功能。此外,您的评论让我无法确定您为什么认为您的选择是正确的ter.@chaospanion
$.map
\u.map
通过特征检测委托给本机映射。这些实现非常聪明。扩展本机原型是个魔鬼。@Raynos-为什么是“魔鬼”正如你如此雄辩地说的那样?@ChaosPandion它扰乱了本机对象的状态。它破坏了对Array.prototype进行假设的代码。这与扩展Object.prototype的原因是一样的。prototype是坏的,它在
循环中为…破坏
。第一种方式是工作的。如果数组中只有一个项,那么它就破坏了,看起来不像good。第二种方法几乎也可以,但它不会产生多个图标img。我让它工作了。我选择了你的方法作为正确的方法,尽管我的脚本非常不同,只是因为你的使用了类似的功能,等等。
var icons = $(".IT_Icon").text().trim().split(",");

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