私はそのようなオブジェクトを持っています:
Object {a: 1, b: 2, undefined: 1}
最大値の識別子(ここでは:)をすばやく取得するにはどうすればよいbですか?配列に変換してから並べ替えてみましたが、アルファベット順に並べ替えられていたため、うまくいきませんでした(3つのうち1つの値を取得するためだけにデータをやりとりするのはやり過ぎのようです)。
私はそのようなオブジェクトを持っています:
Object {a: 1, b: 2, undefined: 1}
最大値の識別子(ここでは:)をすばやく取得するにはどうすればよいbですか?配列に変換してから並べ替えてみましたが、アルファベット順に並べ替えられていたため、うまくいきませんでした(3つのうち1つの値を取得するためだけにデータをやりとりするのはやり過ぎのようです)。
b;-)
回答:
例えば:
var obj = {a: 1, b: 2, undefined: 1};
Object.keys(obj).reduce(function(a, b){ return obj[a] > obj[b] ? a : b });
ではES6:
var obj = {a: 1, b: 2, undefined: 1};
Object.keys(obj).reduce((a, b) => obj[a] > obj[b] ? a : b);
c, d, e... x。
2他にも手に入れることができbますか?
var obj = {a: 1, b: 2, c: 2}, keys = Object.keys(obj), largest = Math.max.apply(null, keys.map(x => obj[x])) result = keys.reduce((result, key) => { if (obj[key] === largest){ result.push(key); } return result; }, []);
アンダースコアまたはローダッシュの使用:
var maxKey = _.max(Object.keys(obj), function (o) { return obj[o]; });
ES6矢印関数を使用する場合:
var maxKey = _.max(Object.keys(obj), o => obj[o]);
var maxKey = _.maxBy(_.keys(obj), function (o) { return obj[o]; });です。
最大値が1つだけではなく、等しい値が多数ある場合の提案を次に示します。
const getMax = object => {
return Object.keys(object).filter(x => {
return object[x] == Math.max.apply(null,
Object.values(object));
});
};
これは、等しい値を持つものがある場合に備えて、最大値を持つすべてのキーを含む配列を返します。例:if
const obj = {apples:1、bananas:1、pears:1}
//これは['apples'、 'bananas'、 'pears']を返します
一方、最大値がある場合:
const obj = {リンゴ:1、バナナ:2、梨:1}; //これは['bananas']を返します
--->配列から文字列を取得するには:['bananas'] [0] // 'bananas'`を返します
object上記の関数が取る引数は、上記は関数を定義するためのES6構文であり、次と同等です。function getMax(object)、それはあなたの質問に答えますか?
2かb、それとも結果として