Underscore.js - 检查对象数组是否包含值

时间:2017-04-02 07:22:20

标签: javascript jquery underscore.js

我有以下对象,我想检查Type.ID是否包含值6508:

 {
   "item": {
      "Feature": [
         {
            "ID": 85408,
            "Status": {
                "ID": 65,
             },
             "Type": {
                 "ID": 6508,
                  "Volume": null
              },
              "Manufacturer": null
          },
          {
             "ID": 85409,
             "Status": {
                 "ID": 65,
              },
              "Type": {
                  "ID": 6509,
                   "Volume": null
              },
              "Manufacturer": null
          }
       ],
       "Errors": {
           "Result": 0,
           "Message": ""
        },
       "RecordCount": 2
      }
 }

我可以集思广益:

for (i = 0; i < data.item.Feature.length; i++) {
     if (data.item.Feature[i].Type.ID == 6508)
        return true;
}
return false;

我如何使用underscore.js做同样的事情?以下不起作用?

_.contains(data.item.Feature.Type.ID, 6508)

3 个答案:

答案 0 :(得分:4)

你不需要下划线;简单JS中的例子。

<div class="container">
    <h2>View 2</h2>
    City:
    <br>
    <input type="text" data-ng-model="city">
    <br>
    <ul>
        <li data-ng-repeat="cust in customers | filter:city | orderBy:'city'">
            {{ cust.name }} - {{ cust.city }}
        </li>
    </ul>
</div>

答案 1 :(得分:3)

使用@FakeRainBrig和JS代码我通过执行以下操作来使用下划线来实现相同的目的:

_.some(data.item.Feature, function(f) {
       return f.Type.ID == 6508;
 })

答案 2 :(得分:0)

只是一个建议兄弟,如果您想要整个对象(内部&#39;功能&#39;列表)而不仅仅是根据您的搜索条件的布尔值,您可以按照下面提到的方式进行。

var val = _.findWhere(data.item.Feature, {'Type': _.findWhere(_.pluck(data.item.Feature, 'Type'), {ID: 6509})});

这将返回:

{
 "ID":85409,
 "Status":{
 "ID":65
},
 "Type":{
    "ID":6509,
    "Volume":null
    },
 "Manufacturer":null
}