首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript -将数组拆分为单独的<td>

Javascript -将数组拆分为单独的<td>
EN

Stack Overflow用户
提问于 2013-07-02 18:54:44
回答 1查看 379关注 0票数 0

我正在努力将一个数组分成3个独立的td。

代码语言:javascript
复制
$(runner).find(".third_level .jockey_stats").html(runners[i].jockey_stats);
$(runner).find(".third_level .trainer_stats").html(runners[i].trainer_stats);

jockey_stats和trainer_stats都是保存3条信息的数组,呈现方式如下:

代码语言:javascript
复制
<td>248-28(11.3%)-35</td>

我希望它像这样显示在表格中

代码语言:javascript
复制
<td>248</td>
<td>28(11.3%)</td>
<td>35</td>

HTML

代码语言:javascript
复制
<table class="third_level" cellspacing="0" border="0">
<tbody>
    <tr>
        <th><%= I18n.t("views.wagering.third_level.career_earnings") %></th>
        <th><%= I18n.t("views.wagering.third_level.jockey_stats") %></th>
        <th><%= I18n.t("views.wagering.third_level.trainer_stats") %></th>
    </tr>
    <tr>
        <% if @third_level_runner %>
            <td class="earnings tl_data"><%= number_to_currency(@third_level_runner.total_earnings, :unit => "₪", :precision => 0, :delimiter => ",") %></td>
            <td class="jockey_stats tl_data"><%= @third_level_runner.jockey_stats %></td>
            <td class="trainer_stats tl_data"><%= @third_level_runner.trainer_stats %></td>
        <% else %>
            <td class="earnings tl_data">-</td>
            <td class="jockey_stats tl_data">-</td>
            <td class="trainer_stats tl_data">-</td>
        <% end %>
    </tr>
</tbody>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-02 19:00:24

好吧,我会咬人的:

代码语言:javascript
复制
$(runner).find(".third_level .jockey_stats").html(runners[i].jockey_stats.replace(/-/g, , '</td><td>'));

这应该能起到作用。

如果您不想使用正则表达式:

代码语言:javascript
复制
$(runner).find(".third_level .jockey_stats").html(runners[i].jockey_stats.split('-').join('</td><td>'));

正则表达式方法的工作原理如下:表达式匹配短划线(-),并将其替换为</td><td>,通过使用全局标志(g),将表达式应用于字符串中的所有短划线。

实际上,<td>248-28(11.3%)-35</td>变成了<td>248</td><td>28(11.3%)-35</td>,然后变成了<td>248</td><td>28(11.3%)</td><td>35</td>

在这种情况下,join-split方法会带来更多的开销,首先将字符串分解为字符串数组:

代码语言:javascript
复制
'<td>248-28(11.3%)-35</td>'.split('-');

变成:

代码语言:javascript
复制
['<td>248','28(11.3%)','35</td>']

使用</td><td>作为分隔符,这将产生

代码语言:javascript
复制
<td>248</td><td>28(11.3%)</td><td>35</td>

但是,如果标记中可能包含破折号,则应该使用正则表达式方法,并对表达式稍加修改。懒惰的解决方案可能是:

代码语言:javascript
复制
jockey_stats.replace(/\>[^<]*/g, function(inner)
{//inner matches substring starting from first > to first <
    return inner.replace(/-/g, '</td><td>');
});

这样,包含破折号的标记内的属性将不会被处理。

表达式非常简单:

\>[^<]*匹配>和所有不是<的后续字符,换句话说,匹配><之间的所有字符。

然后将这个匹配项传递给一个函数,该函数用</td><td>替换所有的破折号。

例如:

代码语言:javascript
复制
console.log('<td data-type="foo">248-28(11.3%)-35</td>'.replace(/\>[^<]*/g, function(inner)
{
    return inner.replace(/-/g, '</td><td>');
}));

日志"<td data-type="foo">248</td><td>28(11.3%)</td><td>35</td>"

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17423717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档