javascript - 从 JSON API 响应获取属性的唯一值计数

标签 javascript ruby-on-rails ruby json angularjs

我有一个由 Ruby on Rails 后端提供服务的 JSON API。其中一个端点返回一个结构如下的对象数组

{
  "title_slug": "16-gaijin-games-bittrip-beat-linux-tar-gz",
  "platform": "Linux",
  "format": ".tar.gz",
  "title": "BIT.TRIP BEAT",
  "bundle": "Humble Bundle for Android 3",
  "unique_games": 9
},
{
  "title_slug": "17-gaijin-games-bittrip-beat-linux-deb",
  "platform": "Linux",
  "format": ".deb",
  "title": "BIT.TRIP BEAT",
  "bundle": "Humble Bundle for Android 3",
  "unique_games": 9
},

由于单个标题有不同类型的下载,因此“标题”在多个对象中并不唯一。我只想计算唯一的标题。

我正在考虑在模型中的 Ruby on Rails 中执行此操作,然后仅在 JSON 响应中发送它,但这不起作用,因为显然它需要整个数组来对它们进行计数。我在前端使用 Angular ,所以我认为它需要在 Controller 中完成。我还过滤了表格中的响应,并希望显示所显示的唯一标题的更新数量。

这是页面的屏幕截图,以便获得更好的视角。 /image/DFx3L.png

非常感谢,

托马斯·乐

顺便说一句,这是我正在开发的一个网站,不会成为公共(public)网站。它是一个数据库网站,保存了我从 IndieGalaHumbleBundle 购买的 bundle 的所有数据。我不会向公众公开这些链接。我正在让它比最低限度的功能更强大,因为它是我在 GitHub 上的一个开源项目,人们可以在本地使用。

以防万一人们想知道为什么我在图像上列出了 Humble Bundle 的东西。

最佳答案

http://jsfiddle.net/hy7rasp4/

将数据聚合在由唯一键索引的数组中,然后您可以访问有关重复项和计数的信息。

var i,
    title,
    uniqueResults= {};

for (i in results) {
   title= results[i].title;
   if (!uniqueResults[title]) {
      uniqueResults[title]= [];
   }

   uniqueResults[title].push(results[i]);
}

关于javascript - 从 JSON API 响应获取属性的唯一值计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25701799/

相关文章:

javascript - moment.js 根据差异更改格式

ruby-on-rails - 覆盖 Rails Paperclip 插件的 content_type

ruby - 与 ruby​​ 和 Nokogiri HTML 不兼容的编码

ruby-on-rails - 没有路线匹配 [PUT]。如何正确走线?

ruby - Ruby 中的递归文件列表

javascript - 滚动时无法更改导航栏的背景?

javascript - JS 函数作为变量 [ getEventListeners API ]

javascript - 使用 D3 使 slider 在水平条形图上工作

ruby-on-rails - attachment_fu : Don't reload thumbnails

ruby-on-rails - Rails link_to : click but stay in place, 不跳转到页面顶部