7

次のような連想配列があります。

var data = {
    0: {
        'Number_of_Something': 212
    },
    1: {
        'Number_of_Something': 65
    },
    2: {
        'Number_of_Something': 657
    }
}

フィールドの最高値を抽出する必要がありますが、これはオブジェクトのオブジェクト内のフィールドであるため、ここでNumber_of_Something概説したものと同様の方法に従うよりも少し複雑です。

オブジェクトをループして値を保存し、次の値が大きい場合はそれを置き換えるのが最も簡単で明白なオプションのようです。

上記の方法以外にこれを達成するためのより簡単な(よりスマートな)方法がある場合に備えて、私は単にこの質問をしていますか?

4

2 に答える 2

17

単純なものは主観的なものになる可能性があります...あなたが求めていることを達成する別の方法は、Object.keysArray.prototype.mapを使用して値の配列を取得し、リンクしたMath.maxで他のソリューションを使用することです:

var data = {
    0: {
        'Number_of_Something': 212
    },
    1: {
        'Number_of_Something': 65
    },
    2: {
        'Number_of_Something': 657
    }
}

var max = Math.max.apply(null,
                        Object.keys(data).map(function(e) {
                                return data[e]['Number_of_Something'];
                        }));
于 2013-04-15T11:18:31.000 に答える
0

独自の (for) ループを作成し、その方法で最大値を返すことができます。もう 1 つのオプションは、Underscore.jsのようなライブラリを使用してこれを処理し、コードを読みやすくすることです。

于 2013-04-15T11:10:03.513 に答える