1

XML サイトマップの「changefreq」を生成しようとしています。ページを保存するたびに、「save_history」配列に日付を追加します。これにより、操作する日付のリストが得られます。最初は、すべての日付を合計して長さを割ろうと思っていましたが、1970 年 1 月 1 日からの平均時間がわかりました。この関数を修正して、日付間の平均時間を取得するにはどうすればよいですか?

http://jsfiddle.net/jwerre/pAfdM/19/

また

  getChangeFequency = function(history) {

    var sum = _.reduce(history, function(memo, num) {
      return memo + num.getTime();
    }, 0);
    var average = sum / history.length;
    var hours = average / 3600000;

    console.log("totals:", sum, average, hours); // 20292433147523 1352828876501.5334 375785.7990282037

    if (hours > 17532) {
      return "never";
    } else if ((8766 < hours && hours > 17531)) {
      return "yearly";
    } else if ((730 < hours && hours > 8765)) {
      return "monthly";
    } else if ((168 < hours && hours > 729)) {
      return "weekly";
    } else if ((24 < hours && hours > 167)) {
      return "daily";
    } else if ((1 < hours && hours > 23)) {
      return "hourly";
    } else {
      return "always";
    }
  };

  save_history = [ Tue Nov 13 2012 09:47:39 GMT-0800 (PST), Tue Nov 13 2012 09:47:44 GMT-0800 (PST), Tue Nov 13 2012 09:47:45 GMT-0800 (PST), Tue Nov 13 2012 09:47:46 GMT-0800 (PST), Tue Nov 13 2012 09:47:47 GMT-0800 (PST) ]

  getChangeFrequency(save_history)
4

3 に答える 3

5

この関数を修正して、日付間の平均時間を取得するにはどうすればよいですか?

履歴はソートされた日付の配列であるため、平均期間は簡単に計算できます。

(_.last(history) - history[0]) / (history.length - 1)

これは、間隔の配列を作成して平均化することと数学的に同等です。結果はミリ秒単位です。

于 2012-11-13T19:35:17.100 に答える
2

間隔の配列を作成します。historyしたがって、変更日が最も古いものから最も新しいものへとソートされていると仮定すると、次のようになります。

var intervals = [];
for (i = 0; i < history.length - 1; i++) {
  intervals[i] = history[i+1].getTime() - history[i].getTime();
}

var sum = _.reduce(intervals, function(memo, num) {
  return memo + num;
}, 0);

var average = sum / intervals.length;
var hours = average / 3600000;
于 2012-11-13T19:34:35.563 に答える
0

この関数を修正して、日付間の平均時間を取得するにはどうすればよいですか?

  1. 既存のデータ セットから、元のデータの各日付間の時差である新しい配列を生成します。
  2. この新しく生成されたデータ セットを使用して、平均値を見つけます。
  3. 1970 年の午前 0 時を基準とした時間値を計算します。つまり、計算された平均が 1970 年 1 月 2 日午後 2 時 3 分である場合、差は 1 日 14 時間 3 分です。
于 2012-11-13T19:28:53.683 に答える