【发布时间】:2015-02-22 19:24:55
【问题描述】:
我正在开发一个 WebApp 来播放我在工作时从 twitter 解析的音乐。目前我正在按从 SoundCloud 获得的歌曲 ID 存储歌曲。但我无法组织它播放最后一首播放的歌曲。我考虑将数据库中的密钥更改为日期的方式,但随后我必须检查歌曲是否已经存在,我认为这将更难做到。但我想弄清楚如何比较日期然后显示最近的歌曲。
我的数据如下所示:
"6655480" : {
"Date" : "12/16/2014 2:58:39 am",
"SongName" : "The Island (Steve Angello, An21 & Max Vangeli remix)",
"Tweet" : "Pendulum/Steve Angello/An21/Vangeli - The Island playing on #BPM - @sxmElectro",
"uri" : "https://api.soundcloud.com/tracks/6655480"
}
我试过了:
$scope.Song.sort(function(a,b){
var c = new Date(a.Date);
var d = new Date(b.Date);
return c-d;
});
但它不起作用。任何帮助表示赞赏。
我得到这样的 $scope.Song:
var ref = new Firebase("https://app.firebaseio.com/SC");
var sync = $firebase(ref);
$scope.Song = sync.$asArray();
更新:
所以我试图通过这样做来解决这个问题:
$scope.log = [];
angular.forEach(values, function(value, key) {
value.sort(function(a,b){
var c = new Date(a.Date);
var d = new Date(b.Date);
return c-d;
}
}, log);
但现在没有任何效果。我的语法有什么问题?这是正确的方法吗?
【问题讨论】:
-
您的结构比简化的
sort更复杂。Song长什么样子? -
更新了我的答案,如果需要我可以给你更多代码
-
不管你是怎么得到它的,完整的结构是什么样的?你不能这样做
a.Date需要类似于:a.6655480.Date但 ID 密钥都会不同。没有那些 ID 对象就简单多了 -
所以要访问日期我只需使用 ng-repeat 那么我可以使用 forEach 函数遍历数组并提取日期,然后比较日期并将对象推送到新的数组中吗?
-
当然,这很简单
标签: javascript angularjs angularjs-scope