オブジェクトの JavaScript 配列を作成し、date.js を使用して日付を解析し、date.js 比較メソッドを使用してオブジェクトの配列を並べ替えようとしています。これは、2 つの問題を示すためにまとめたコードです。
問題 1: date.js が解析できない日付を無視して警告するにはどうすればよいですか? 問題 2: これらの日付でオブジェクトの配列を並べ替えるにはどうすればよいですか? (date.js の有無にかかわらず)
私の直感は、これはすべて間違っていて、もっと良い方法があることを教えてくれます。アイデア?
<script type="text/javascript" src="depend/date.js"></script>
<script type="text/javascript">
var timedata = ["tomorrow", "today", "next thursday", "2012-08-02T04:00:00.000Z"]; // test data
var myArrayOfObjects = [];
//Iterate through the timedata array
for(var row = 0; row < timedata.length; row++){
var cleanrow = true;
// Here is the first problem, on the 2012-08-02T04:00:00.000Z string can't be parsed (Date.parse(timestr) returns 0)
// even though it was previously created with .toISOString method below as a test
// Error: Ignoring row 3, could not parse this date: 2012-08-02T04:00:00.000Z
if (Date.parse(timedata[row])){
time = Date.parse(timedata[row]);
isoTime = time.toISOString();
}else{
console.log("Ignoring row " + row + ", could not parse this date: " + timedata[row]);
cleanrow = false;
}
var xdata = "dummytestdata";
var weight = "dummytestdata";
if(cleanrow) {
myArrayOfObjects.push({x: xdata, xytime: isoTime, weight: weight});
}
}
// Here is the second problem.
// Error: TypeError: Date.parse(a.xytime) is null
myArrayOfObjects = myArrayOfObjects.sort(function(a,b){ return Date.parse(a.xytime).compareTo(Date.parse(b.xytime)); });
// Show that the objects are sorted by dates
for(var row = 0; row < myArrayOfObjects.length; row++) {
console.log(myArrayOfObjects[row].xytime);
}
</script>