我有一个由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响应中发送它但是这不起作用,因为它显然需要整个数组来计算它们。我在前端使用角度,所以我认为它需要在控制器中完成。我还过滤表中的响应,并希望显示更新的唯一标题数。
以下是此页面的屏幕截图,以获得更好的视角。 http://i.imgur.com/Iu1Xajf.png
非常感谢,
Thomas Le
顺便说一下,这是我正在开发的一个不会成为公共网站的网站。它是一个数据库站点,其中包含我从IndieGala
和HumbleBundle
购买的捆绑包上的所有数据。我不打算向公众提供这些链接。我使它比最低限度更具功能性,因为它是我在GitHub上的一个开源项目,人们可以在本地使用它们。
以防人们想知道为什么我在图片上列出了Humble Bundle的东西。
答案 0 :(得分:1)
在由唯一键索引的数组中聚合数据,然后您可以访问有关重复和计数的信息。
var i,
title,
uniqueResults= {};
for (i in results) {
title= results[i].title;
if (!uniqueResults[title]) {
uniqueResults[title]= [];
}
uniqueResults[title].push(results[i]);
}
答案 1 :(得分:0)
也许最好同时重新构建数据,这样您也可以在以后轻松获取这些项目,以及快速查找标题数量,例如:在 JavaScript
中// assuming arrayOfObjects
var objectOfTitles = {},
i;
for (i = 0; i < arrayOfObjects.length; ++i) {
if (!objectOfTitles.hasOwnProperty(arrayOfObjects[i].title)) {
objectOfTitles[arrayOfObjects[i].title] = [];
}
objectOfTitles[arrayOfObjects[i].title].push(arrayOfObjects[i]);
}
var numberOfTitles = Object.keys(objectOfTitles).length;
// then say you choose a title you want, and you can do
// objectOfTitles[chosenTitle] to get entries with just that title