0

問題があり、解決方法がわかりません。:(

次のようなオブジェクト内のオブジェクトにスクリプトがあります。

var s = {
  1: {
    type: "main",
    ...
    values: {
      speed: 10,
      dexterity: 5,
      jump: 1
    }
  },
  2: {
    type: "main",
    ...
    values: {
      speed: 8,
      dexterity: 3,
      jump: 13
    }
  },
  3: ...
}

オブジェクト内で、いくつかのオブジェクト プロパティsの合計が最大の要素を見つける必要があります。values

たとえば、プロパティspeedとの合計が最も高いオブジェクトを見つける必要がありますdexterity

ここに要素番号 1があります。これは、合計が である番号10+52 の代わりに合計があるためです8+3

4

3 に答える 3

1

これを試して:

function getMax(obj) {
    var max = 0;
    var maxKey;
    for (var key in obj) {
        var cur = obj[key];
        var values = cur.values;
        var total = values.speed + values.dexterity;
        if (total > max) {
            max = total;
            maxKey = key;
        }
    }
    return maxKey;
}

デモ: http://jsfiddle.net/xn8WC/2/

合計が最も高いオブジェクトのキー ( 12、など) を返します。3

あなたはそれをのように呼びますgetMax(s);

于 2013-04-30T19:34:46.517 に答える
-1

上記のコードを考えると、

var biggest= s[Object.keys(s).filter(function(a,b,c){ 
   a=s[a];
   return (b=a.values.speed + a.values.dexterity) > this[0] ?
      (this[0]=b) : 0;
}, [0]).slice(-1)[0]];
于 2013-04-30T19:34:10.793 に答える