다음과 같은 개체가 있습니다.
Object {a: 1, b: 2, undefined: 1}
가장 큰 값 식별자 (여기 :)를 어떻게 빠르게 가져올 b수 있습니까? 배열로 변환 한 다음 정렬을 시도했지만 알파벳순으로 정렬 되었기 때문에 작동하지 않았습니다 (그리고 3 개 중 하나의 값을 얻기 위해 데이터를 앞뒤로 저글링하는 것은 과잉 인 것 같습니다).
다음과 같은 개체가 있습니다.
Object {a: 1, b: 2, undefined: 1}
가장 큰 값 식별자 (여기 :)를 어떻게 빠르게 가져올 b수 있습니까? 배열로 변환 한 다음 정렬을 시도했지만 알파벳순으로 정렬 되었기 때문에 작동하지 않았습니다 (그리고 3 개 중 하나의 값을 얻기 위해 데이터를 앞뒤로 저글링하는 것은 과잉 인 것 같습니다).
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; }, []);
밑줄 또는 Lo-Dash 사용 :
var maxKey = _.max(Object.keys(obj), function (o) { return obj[o]; });
ES6 Arrow 기능 :
var maxKey = _.max(Object.keys(obj), o => obj[o]);
var maxKey = _.maxBy(_.keys(obj), function (o) { return obj[o]; });.
다음은 최대 값이 하나뿐 아니라 동일한 값이 많은 경우에 대한 제안입니다.
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그 결과 를 원하십니까