반응형
개체에서 가장 높은 값으로 키 가져 오기
다음과 같은 개체가 있습니다.
Object {a: 1, b: 2, undefined: 1}
가장 큰 값 식별자 (여기 :)를 어떻게 빠르게 가져올 b
수 있습니까? 배열로 변환 한 다음 정렬을 시도했지만 알파벳순으로 정렬 되었기 때문에 작동하지 않았습니다 (그리고 3 개 중 하나의 값을 얻기 위해 데이터를 앞뒤로 저글링하는 것은 과잉 인 것 같습니다).
예를 들면 :
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);
밑줄 또는 Lo-Dash 사용 :
var maxKey = _.max(Object.keys(obj), function (o) { return obj[o]; });
ES6 Arrow 기능 :
var maxKey = _.max(Object.keys(obj), o => 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
과 같다고 가정합니다 .
var obj = {a: 1, b: 2, undefined: 1}
당신은 이것을 할 수 있습니다
var max = Math.max.apply(null,Object.keys(obj).map(function(x){ return obj[x] }));
console.log(Object.keys(obj).filter(function(x){ return obj[x] == max; })[0]);
아주 기본적인 방법입니다. 처리 속도가 느릴 수 있음
var v = {a: 1, b: 2, undefined: 1};
function geth(o){
var vals = [];
for(var i in o){
vals.push(o[i]);
}
var max = Math.max.apply(null, vals);
for(var i in o){
if(o[i] == max){
return i;
}
}
}
console.log(geth(v));
참고 URL : https://stackoverflow.com/questions/27376295/getting-key-with-the-highest-value-from-object
반응형
'programing tip' 카테고리의 다른 글
Swift에서 지연 초기화 된 변수를 다시 초기화합니다. (0) | 2020.11.27 |
---|---|
Swift : 튜플을 사용하는 단일 스위치 케이스에서 여러 간격 (0) | 2020.11.27 |
파이썬에서 정확한 함수 타이밍 (0) | 2020.11.26 |
C에서 char 문자열을 수정할 수 있습니까? (0) | 2020.11.26 |
.NET C #에서 전체 단어의 문자열 자르기 (0) | 2020.11.26 |