首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从字典javascript中获取所有最小值

从字典javascript中获取所有最小值
EN

Stack Overflow用户
提问于 2016-02-21 02:33:07
回答 2查看 2K关注 0票数 3

我有一个很长的字典,里面有很多条目{y:10, au:41, w:41, m:11, u:21, t:1, d:1},我需要的是获取数组中所有值最小的键。我找到了这个(Getting key with the highest value from object),但它不适用于多个最小值(最大值)

我只需要使用核心javascript。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-21 02:37:25

最快、最简单的方法可能是使用Object.keys将对象键作为数组获取,并根据具有最低值的项对该数组进行过滤。

首先需要找到最低的值,然后过滤,这里有一种方法

代码语言:javascript
复制
var obj    = {y:10, au:41, w:41, m:11, u:21, t:1, d:1};
var keys   = Object.keys(obj);
var lowest = Math.min.apply(null, keys.map(function(x) { return obj[x]} ));
var match  = keys.filter(function(y) { return obj[y] === lowest });

document.body.innerHTML = '<pre>' +JSON.stringify(match, null, 4)+ '</pre>';

获取键,然后创建一个值数组,该数组将传递给Math.min.apply以获取对象中的最低值。

然后,只需过滤与对象中最低值匹配的键即可。

下面是使用sort的另一种方法

代码语言:javascript
复制
var obj   = {y:10, au:41, w:41, m:11, u:21, t:1, d:1};
var keys  = Object.keys(obj).sort(function(a,b) { return obj[a] - obj[b]; });
var match = keys.filter(function(x) { return obj[x] === obj[keys[0]]; });
票数 4
EN

Stack Overflow用户

发布于 2016-02-21 02:47:16

这是一个使用Array#reduce()的解决方案

代码语言:javascript
复制
var object = { y: 10, au: 41, w: 41, m: 11, u: 21, t: 1, d: 1 },
    result = function (o) {
        var keys = Object.keys(o);
        return keys.reduce(function (r, k) {
            if (o[k] < o[r[0]]) {
                return [k];
            }
            if (o[k] === o[r[0]]) {
                r.push(k);
            }
            return r;
        }, [keys.shift()]);
    }(object);

document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35527341

复制
相关文章

相似问题

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