下划线模板 - 如何从数组中选择单个值?

时间:2014-09-18 06:40:32

标签: jquery templates underscore.js

在我的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而失败,那么我就无法从其他人那里打印出来了!

2 个答案:

答案 0 :(得分: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>
  

一旦我想找到&#34; divisionCode&#34;如果存在,让它打印。后来   它需要跳过。如何实现这个目标?

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

答案 1 :(得分:0)

据我所知,您想从中获取单个除法 JSON 集合对象。但您使用的是 divisionCode 部门 由于 JSON 对象表明它包含重复值。您可以使用以下代码删除 JSON 集合

中的重复项
var u = _.uniq(details);

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

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