日付の比較の仕方

kintone Rest Apiでレコードを取得し、一番最小の値を表示するプログラムを作りたいのですが、上手く行きませんのでご教示のほどよろしくお願いいたします。javaを勉強して間もないのでコードが可笑しい所があるかもしれませんが宜しくお願いします。

//ソース

(function(){
‘use strict’;
moment.locale(‘ja’);
kintone.events.on(‘app.record.index.show’, function(event){

var body = {
“app”: 215,
“fields”: “security”,
};

kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘GET’, body, function(resp) {
var Dates = resp.records;
var records = event.records;
for (var i = 0; i < records.length; i++) {
var DateArray = new Array();
DateArray.push(moment(Dates.security));
var min = moment(Math.min.apply(null, DateArray)).format(‘YYYY-MM-DD’);
}
console.log(JSON.stringify(min));
});
});

})();

 

風見 信吾さん。

for文の中で配列を定義してしまうと、回るたびに初期化されてしまい

最後に入った値だけしかない常態で渡されてしまいます。

配列の中に値を入れるのは for文の中で大丈夫なのですが、配列の中に push する際に日付だけを入れたいなら

DateArray.push(moment(Dates[i].security.value));

という風に、value まで指定しないといけません。

 

yogi様

回答ありがとうございます。

試したみた所値は取得出来たのですが、最小の値ではありませんでした。

この場合どこが可笑しいのかご教示のほどお願いできませんでしょうか?

すいません。。。名前、間違えてましたね。。。

風早 信吾さん

恐らくですが

for文の回す回数を event.records で回しているからかと思います。

event.records で回すと開いてるページの件数分しか回らないので全件取得できていなのではないかと思います。

全件とりたい場合では回す回数は、GET でとったレコード分を回してあげるととれるかと思います。

yogi様

回答ありがとうございます。

何回もすいません …

GET でとったレコード分との事で for (var i = 0; i < Dates.length; i++) で試した所レコード番号の一番目が取得されます。

もう一度教示のほどお願いできませんでしょうか?

名前の件ですが、間違いは誰にでもあるので気にしないでください。

風早 信吾さん。

すいません、さきに聞いておくべき事でしたが

日付を比較して、最小値をとりたいというのは

2018-05-01 と 2018-06-01 があった場合

2018-05-01 がとれるという認識で大丈夫でしょうか?

それを前提とした場合に私の環境だと以下のコードで正常に動きましたが、差異はあるでしょうか?

(function(){
'use strict';
moment.locale('ja');
kintone.events.on('app.record.index.show', function(event){
var appId = event.appId;
var body = {
"app": appId,
"fields": "security",
};

kintone.api(kintone.api.url('/k/v1/records', true), 'GET', body, function(resp) {
var Dates = resp.records;
var records = event.records;
var DateArray = new Array();
for (var i = 0; i < Dates.length; i++) {

DateArray.push(moment(Dates[i].security.value));
var min = moment(Math.min.apply(null, DateArray)).format('YYYY-MM-DD');
}
console.log(JSON.stringify(min));
});
});

})();

yogi様

回答ありがとうございます

コードを見比べた所for文の中に var DateArray = new Array();を入れていたのが原因だということが分かりました。

おかげで無事に動作しました。

数々の回答やソースの提示ありがとうございました。