1

私は ajax を使用して 1 日あたりの売上リストを取得しています。以下は、返された ajax のサンプルです (フロントエンドとバックエンドを完全に制御しているので、タスクに合わせて配列構造を改善できるかどうか教えてください) );

{

"map": [ … ],
"salesCount": {
    "ins_1": {
        "17/09/2012": 5,
        "16/09/2012": 32,
        "15/09/2012": 75,
        "14/09/2012": 78,
        "13/09/2012": 79,
        "12/09/2012": 83,
        "11/09/2012": 74,
 ...
    "ins_2": {
        etc

今日の売上 (2012 年 9 月 17 日) と昨日の売上を取得したいと考えています。これまでのところ、私はこれを持っています:

$.ajax({
    url:        appPath+'application/sale/json',
    type:       'POST',
    dataType:   'json',
    success:    function(response) 
    {
        var keys = null;

        // Get and organise our sales data
        jQuery.each(response.salesCount, function(insurer, dayList) 
        {
            controller.salesData[insurer] = {"days": dayList};

            keys = Object.keys(controller.salesData[insurer].days);
            controller.salesData[insurer].today = controller.salesData[insurer].days[keys[0]];

            // Update sales totals
            $('#'+insurer+' p.today').html(controller.salesData[insurer].today);

これは問題なく動作しますが、ご想像のとおり、あまり柔軟ではありません (オブジェクトが存在しない順序に依存しようとするのは悪い考えだと思います)。

したがって、日付に基づいて販売配列を参照しようとしています。私が試してみました:

// Work out todays date and sales
var today = new Date();
var todayString = today.getDate()+'/'+today.getMonth()+'/'+today.getFullYear();

console.log(todayString)
console.log(controller.salesData[insurer].days[todayString]);

// outputs: 17/8/2012 and "85"(which is wrong, no idea where it gets that value)

配列キーを変更してスラッシュなどを削除しようとしましたが、喜びはありません。確かにこれを行うより良い方法はありますか?

ありがとうございました。

4

1 に答える 1

2

今日の日付の売上数を返すには、次のように JSON オブジェクトをクエリできます。

var json =
{
    "salesCount": {
        "ins_1": {
            "17/09/2012": 5,
            "16/09/2012": 32,
            "15/09/2012": 75,
            "14/09/2012": 78,
            "13/09/2012": 79,
            "12/09/2012": 83,
            "11/09/2012": 74
        }
    }
};

var today = new Date();
var month = today.getMonth() + 1;
var dateString = today.getDate() + '/' + (month < 10 ? '0' + month : month) + '/' + today.getFullYear();
var totalSales = json['salesCount']['ins_1'][dateString];

console.log(totalSales); // outputs 5
于 2012-09-17T14:31:25.977 に答える