dateTime[]という2D配列があります。dateTime [count] [0]には将来の日時が含まれ、dateTime[count][1]には1234などの4桁の値が含まれます。dateTime[count][0]である列0を昇順で並べ替えようとしています。(つまり、2D配列の列0を今から最も近い日時に従ってソートします)
私のjavascript2d配列は次のようになっていると仮定します。
dateTime[0][0] = 2/26/2013 11:41AM; dateTime[0][1] = 1234;
dateTime[1][0] = 2/26/2013 10:41PM; dateTime[1][1] = 4567;
dateTime[2][0] = 2/26/2013 8:41AM; dateTime[2][1] = 7891;
dateTime[3][0] = 3/26/2013 8:41AM; dateTime[3][1] = 2345;
私はちょうどこのように書いた実際にこれは私dateTime[count][0] ; = new Date(x*1000);
がxがunixtime()であるところに値を挿入する方法です
並べ替え後に配列をどのように表示するか:
dateTime[0][0] = 2/26/2013 8:41AM; dateTime[0][1] = 7891;
dateTime[1][0] = 2/26/2013 11:41AM; dateTime[1][0] = 1234;
dateTime[2][0] = 2/26/2013 10:41PM; dateTime[2][1] = 4567;
dateTime[3][0] = 3/26/2013 8:41AM; dateTime[3][1] = 2345;
より少ないコードでこれを解決する方法を教えてください。
ありがとう。:)
これは私が今まで行ったことです(配列をソートしていません。ここでもdateTimeはタイマーと呼ばれます)
function checkConfirm() {
var temp = timers[0][0];
var timeDiv = timers[0][1];
for (var i=0;i<timers.length;i++) {
if (timers[i][0] <= temp) { temp = timers[i][0]; timeDiv = timers[i][1]; }
}
if (timers.length > 0 ){ candidate(temp,timeDiv); }
}
function candidate(x,y) {
setInterval(function () {
var theDate = new Date(x*1000);
var now = new Date();
if ( (now.getFullYear() === theDate.getFullYear()) && (now.getMonth() === theDate.getMonth()) ) {
if ( (now.getDate() === theDate.getDate()) && (now.getHours() === theDate.getHours()) ) {
if ( now.getMinutes() === theDate.getMinutes() && (now.getSeconds() === theDate.getSeconds()) ) { alert("its time"); }
}
}
}, 10);
}
最後に、現在の時刻が配列内の時刻と一致するたびにユーザーに警告したかったのです。これが私が問題を解決しようとした方法ですが、これは完全に間違ったアプローチです。