【问题标题】:Unserscore template - how to pick a single value from the array?下划线模板 - 如何从数组中选择单个值?
【发布时间】:2014-09-18 06:40:31
【问题描述】:

在我的json 中,我有 4 个值示例:

{
 details : [{"division" : "X"}, {"division" : "X"}, {"division" : "X"}, {"division" : "X"}]
}

在上面的例子中,“division”具有相同的值,它有 4 个实例。我如何从中选择一个“除法”值...?

我的尝试:

<% _.each(details, function(item, index) { %>

            <span><%= item.divisionCode %></span> //I am getting 4 times.

        <% }) %>

所以我尝试这样:

<% _.each(details, function(item, index) { %>

                <span><%= item[0].divisionCode %></span> //But not works!

            <% }) %>

这样做的正确方法是什么?

我的期望是:

一旦我想找到“divisionCode”(如果存在),就让它打印出来。稍后它需要跳过。如何做到这一点?

类似的东西?

<% _.each(results, function(item, index) { %>

            <span><%= !item.divisionCode ? item.divisionCode : null %></span>

        <% }) %>

我可以这样做:

<span><%= details[0].divisionCode %></span>

但如果第一个实例因 DivisionCode 失败,那么我无法从其他人那里打印!

【问题讨论】:

    标签: jquery templates underscore.js


    【解决方案1】:
    <% _.each(details, function(item, index) { %>
        <span><%= item[0].divisionCode %></span> //But not works!
    <% }) %>
    

    因此,在此实例中,item 指的是数组项而不是数组本身,就像您如何使用 _.each 来遍历数组一样。因此,item[0] 实际上是在尝试访问该项目的属性 0,该属性不存在(它将是未定义的)。

    <span><%= details[0].division %></span>
    

    这可行,但我认为这也不是你真正想要的。

    我不确定您想要什么,但使用下划线(您可能要考虑使用 lodash)_.find 方法可能是您想要的。 Find 会返回第一个匹配的实例,你可以这样使用它:

    <span><%= _.find( details, 'division' ) %></span>
    

    一旦我想找到“divisionCode”(如果存在),就让它打印出来。之后 它需要跳过。如何做到这一点?

    为了在迭代中跳过一个值,只需插入一些逻辑来执行 if 并在输出之前先检查该值是否存在。

    【讨论】:

    • 我们不能使用_.find 使用underscore 吗?
    • 是的,下划线 _.find 可以正常工作。 Lodash 实现了与下划线相同的 API,但通常更有效。
    【解决方案2】:

    据我了解,您想从 JSON 集合对象。但您使用的是 divisionCode insted of division 正如 JSON 对象所暗示的,它包含重复值。您可以使用以下代码删除 JSON 集合中的重复项

    var u = _.uniq(details);
    

    以上代码返回对象的集合。 然后使用以下内容在模板内的 span 中打印对象值

    <% _.each(u, function(item, index) { %>
    <span><%= item.division %></span> 
    <% }) %>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多