首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在带有下划线的散列中查找min值的键

如何在带有下划线的散列中查找min值的键
EN

Stack Overflow用户
提问于 2014-02-26 18:23:31
回答 3查看 2.1K关注 0票数 4

我想找一个带下划线的最小值的键。例如:

代码语言:javascript
复制
var my_hash = {'0-0' : {value: 23, info: 'some info'},
              '0-23' : {value: 8, info: 'some other info'},
              '0-54' : {value: 54, info: 'some other info'},
              '0-44' : {value: 34, info: 'some other info'}
              }
find_min_key(my_hash); => '0-23'

我怎么能在得分不足的情况下做到这一点?

我试过:

代码语言:javascript
复制
_.min(my_hash, function(r){
  return r.value;
});
# I have an object with the row, but not it's key
# => Object {value: 8, info: "some other info"}

我还尝试对其进行排序(然后获取第一个元素):

代码语言:javascript
复制
_.sortBy(my_hash, function(r){ 
  return r.value; 
})

但是它返回一个带有数字索引的数组,因此我的散列键丢失了。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-02-26 18:44:53

下划线或下划线< 4:

_.min(_.keys(my_hash), function(k) { return my_hash[k].value; }); //=> 0-23

使用Lodash >= 4:

_.minBy(_.keys(my_hash), function(k) { return my_hash[k].value; }); //=> 0-23

没有图书馆:

Object.entries(my_hash).sort((a, b) => a[1].value - b[1].value)[0][0]

Object.keys(my_hash).sort((a, b) => my_hash[a].value - my_hash[b].value)[0]

票数 8
EN

Stack Overflow用户

发布于 2014-02-26 18:46:18

你可以用reduce来做这件事

代码语言:javascript
复制
var result = _.reduce(my_hash, function(memo, val, key) {
  if (val.value < memo.value || _.isNull(memo.value)) {
    return {key: key, value: val.value};
  } else {
    return memo;
  }
}, {key: "none", value: null});
console.log(result.key);

产出:

代码语言:javascript
复制
0-23
票数 3
EN

Stack Overflow用户

发布于 2014-02-26 18:48:55

代码语言:javascript
复制
_.reduce(my_hash, function(m, v, k, l) {
  if (v.value <= l[m].value) {
    m = k;
  }
  return m;
}, '0-0');
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22049946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档