我尝试了很多算法来将我的Array与内部对象转换为数组数组。但每次它不起作用或我的新创建数组是空的。例如,我无法使用angular.foreach()
或myArray.forEach(function(element))
遇到此问题。我真的不知道为什么,因为它被声明并初始化为array "var myArray = [];"
。
然后我使用push
来填充它,我在console.log中获得的是:
我想要的是_.SortBy(myArray, 'date');
(Underscore.js)可以使用的内容,我需要myArray
这样的内容:
var stooges = [{name: 'moe', age: 40}, {name: 'larry', age: 50}, {name: 'curly', age: 60}];
关注这篇文章:Converting a JS object to an array我几乎没有列出所有列出的内容,但没有任何效果......你能帮我一把吗?
$scope.myArray = [];
// This is into an angular.foreach
$scope.myArray.push({'Name' : snapshot.val().name, 'Link' : snapshot.val().link, 'second' : snapshot.val().second, 'var' : snapshot.val().var, 'selfID' : 'MyID', 'date' : snapshot.val().date, 'hour' : snapshot.val().hour });
console.log("MyArray :", $scope.myArray);
我的数组似乎有问题,我尝试了这两个函数,但我看不到任何console.log()
...我的数组是否可能被锁定?也许没有函数(sort,_.sortBy ......)会遇到它?
// One try to run into and sort
$scope.myArray.sort(function(x, y)
{
var date1 = new Date(x.date);
var date2 = new Date(y.date);
console.log("My dates :", date1);
console.log("My dates :", date2);
return date1 - date2 ;
});
// An other try to run into my array
for(var i = 0; i < $scope.myArray.length; i++)
{
console.log("I'm in "+i+" with : "+$scope.newCal[i]);
}
// Even is showing the complete Array in console.log is working, this below shows me "undefined"
console.log("One element : "+$scope.newCal[1]);
答案 0 :(得分:2)
正如其他人所指出的那样,您应该只需按_.sortBy(myArray, 'date')
按日期对数组进行排序。
如果其他所有方法都失败了,您可以随时尝试myArray.sort((a, b) => a.date < b.date)
答案 1 :(得分:0)
在数组中,您使用了date
个关键字,在此函数_.SortBy(myArray, 'Date');
中,您使用Date
关键字进行排序。
将'Date'
关键字替换为'date'
,然后尝试对数组进行排序。
所以你的排序函数将是_.sortBy(myArray, 'date')
答案 2 :(得分:0)
您可以使用_.SortBy(myArray,'date'),但由于您的“date”属性似乎是字符串文字,因此将按字母顺序排序。你需要做这样的事情
function parseYourDateToRealDateObjectSomehow(dateString){ return new Date(); }
_.SortBy(myArray, function(item1,item2){
var bigger = parseYourDateToRealDateObjectSomehow(item1.date) > parseYourDateToRealDateObjectSomehow(item2.date);
if(bigger) return 1;
var smaller = parseYourDateToRealDateObjectSomehow(item1.date) <
parseYourDateToRealDateObjectSomehow(item2.date);
if(smaller) return -1;
return 0;
});
答案 3 :(得分:0)
问题解决了!所以“sort()”方法不是原因。问题在于firebase和我的Array之间的异步通信,当我将sort()方法放入我的firebase请求(我用来填充数组)时,排序成功。
谢谢大家的支持! ;)