【问题标题】:Getting object in array by key name rather than index [duplicate]通过键名而不是索引获取数组中的对象[重复]
【发布时间】:2017-12-26 22:08:36
【问题描述】:

我有一个这样的收藏......

var data = {
    "buckets": [
        {
            "key": "ia-Business",
            "doc_count": 88
        },
        {
            "key": "ia-Health_Sciences_and_Allied_Health",
            "doc_count": 58
        },
        {
            "key": "ia-Media_Communications_and_Creative_Arts",
            "doc_count": 40
        },
        {
            "key": "ia-Information_Technology",
            "doc_count": 35
        }
    ]
};


alert(data.buckets[0].doc_count);

是否可以为具有key 属性ia-Business 的对象获取属性doc_count 的值?

【问题讨论】:

    标签: javascript arrays filter


    【解决方案1】:

    使用 Array#find,如

    buckets.find(bucket => bucket.key === 'ia-Business')
    

    【讨论】:

      【解决方案2】:

      您的 buckets 属性包含一个数组,而 javascript 不允许您通过属性值轻松访问数组中的对象。

      您需要遍历对象数组以找到您正在寻找的bucket,例如:

      var desiredBucket;
      
      for (var i = 0; i < data.buckets.length; i++) {
          var bucket = data.buckets[i];
          if (bucket.key === 'ia-Business') {
              desiredBucket = bucket;
              break;
          }
      }
      
      console.log(desiredBucket.doc_count);
      

      或者,您可以使用 javascript underscore 库,使用 findWhere 方法:

      var desiredBucket = _.findWhere(data.buckets, { key: 'ia-Business' });
      

      它通过数组中对象的属性搜索匹配的数组,并返回第一个结果。

      【讨论】:

      • 谢谢@Sneaksta 这正是我要找的...
      【解决方案3】:

      现在,buckets 基本上是一个带有额外步骤的对象。删除这些额外步骤将允许您直接通过密钥访问您的条目:

      const onJSON = { buckets: {
          "ia-Business": 88,
          "ia-Health_Sciences_and_Allied_Health": 58
          // ...
      }};
      

      或者,如果您预计需要存储的文件数量超过文档数量,那么这种方法的可扩展性会更高:

       const onJSON = { buckets: {
          "ia-Business": { doc_count: 88 },
          "ia-Health_Sciences_and_Allied_Health": { doc_count: 58 }
          // ...
      }};
      

      【讨论】:

        猜你喜欢
        • 2017-08-27
        • 2013-10-07
        • 1970-01-01
        • 2018-05-23
        • 2014-06-11
        • 1970-01-01
        • 2019-11-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多