如何将文本附加到javascript数组的所有值

时间:2011-10-26 03:09:38

标签: javascript

基本上,我需要转换一个字符串

"23423,1616,3461743,1345" 

到字符串

"<img src='23423'></img><img src='1616'></img><img src='3461743'></img><img src='1345'></img>

到目前为止,我已经尝试过:

    var PhotoArray=JSONeventobject.Events[i].FileNameArray.split(","); // Just convert this string to array

    for (i = 0; i < PhotoArray.length; i++) {
        PhotoArray[i] = "<img src='"+PhotoArray[i]+"</img>";
    }


            var Photostring = PhotoArray.toString().replace(",", "")

但是这会导致我的浏览器崩溃。这对我来说很有意义:/

7 个答案:

答案 0 :(得分:14)

这里有一些可怕的答案。尝试:

"1,2,3,4".split(",").map(function(a) { return "<foo>" + a + "</foo>"; }).join("");

答案 1 :(得分:3)

您需要确保关闭图片代码。可能导致问题的另一件事是i未定义。您的浏览器是否提供错误消息?

var str = "23423,1616,3461743,1345";
var PhotoArray = str.split(",");
for ( var i = 0; i < PhotoArray.length; i++ ) {
    PhotoArray[i] = "<img src=\"" + PhotoArray[i] + "\"></img>";
}
str = PhotoArray.join("");

答案 2 :(得分:1)

HTML中没有</img>标记,因此您不需要。

PhotoArray[i] = "<img src='"+PhotoArray[i]+"</img>";中,您没有结束图片代码,这会产生<img src='1616</img>,这就是为什么它会产生奇怪的结果。请改为PhotoArray[i] = "<img src='"+PhotoArray[i]+"'>";

答案 3 :(得分:1)

如果您不想使用循环(我不想使用循环),您可以这样做:

var str = "23423,1616,3461743,1345";

str = ("," + str + ",").split(',').join("'></img>,<img src='").split(",").slice(1,-1).join('');

console.log(str);

它正在做的是在列表的任一侧添加逗号,将字符串拆分为基于这些逗号的数组,然后在连接调用的两侧添加img标记,再次根据打开img之间的命令进行拆分标记和关闭我们刚刚放入的img标记,刻录数组中的第一个和最后一个元素,然后最后将它们全部连接成一个字符串。

控制台输出是:

<img src='23423'></img><imgsrc='1616'></img><img src='3461743'></img><img src='1345'></img>

没有什么比丑陋的单线解决方案好了!

答案 4 :(得分:0)

除了@mikel所说的 -

您使用相同的变量i作为JSONeventobject.Events的索引以及PhotoArray的索引。没有看到你的其余代码,我不知道这是否会成为一个问题,但值得检查。

此外,不是转换为数组而是返回,而只是写一下似乎更简单:

var Photostring = "<img src='" + JSONeventobject.Events[i].FileNameArray.replace(/,/g, "'/><img src='") + "'/>";

(也就是说,将所有逗号替换为'/><img src=',在第一个元素的<img src='前面添加前缀,并追加最后一个元素的'/>。)

答案 5 :(得分:0)

变量“i”是否声明为var

答案 6 :(得分:0)

#1    str.split([separator[, limit]])

分裂功能 将字符串拆分为数组 基于我们给出的分隔符​​。限制是可选的。

#2    arr.map(callback[, thisArg])

地图功能 返回新数组 形成了 从结果 调用“回调”功能 对于“arr”中的每个元素。 thisArg是可选的。

#1    str.split([separator[, limit]])

加入功能 将数组的所有元素连接成一个字符串。限制是可选的。

所以,回答是:

var photoString = "23423,1616,3461743,1345";
var photoArray = str.split(",").map(
    function(a) {
        return '<img src="' + a + '"></img>';
    }
).join("");

来源: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/split https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/map https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/join