微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何通过某个值获取 Map 键?例如 Map.prototype.get -> 按最低值键

如何解决如何通过某个值获取 Map 键?例如 Map.prototype.get -> 按最低值键

想象一下我的 elementsMap 有以下键值对:

{ 'A' => 11,'B' => 8,'C' => 6 } 

怎样才能得到key的最小值?

对于地图,请参阅:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/get

编辑:请不要将其转换为数组

附录

如果我使用 finally TypeScript 和下面的解决方案,我会遇到一些麻烦:

function getMinKeyOfMap (map: Map<string,number>): string | undefined {
    let minKey: string;
    map.forEach((v,k)  =>{
        if (minKey === undefined || map.get(minKey) > v) {
            // map.get(minKey): Object is possibly 'undefined'.ts(2532)
            minKey = k;
        }
    });
    return minKey; // Variable 'minKey' is used before being assigned.ts(2454)
   
}

我对这个答案并不完全满意,但我不想再让其他人紧张,..

解决方法

只需展开地图并减少键/值对。要获取密钥,请取数组的第一项。

const
    map = new Map([['A',11],['B',8],['C',6]]),smallest = [...map].reduce((a,b) => a[1] < b[1] ? a : b)[0];

console.log(smallest);

无需将映射转换为数组,您可以直接迭代映射,使用 for ... of statement 或使用

let map = new Map([['A',smallest;

for (const [k,v] of map)
    if (smallest === undefined || map.get(smallest) > v)
        smallest = k;

console.log(smallest);

Map#forEach

let map = new Map([['A',smallest;

map.forEach((v,k) => {
    if (smallest === undefined || map.get(smallest) > v)
        smallest = k;
});

console.log(smallest);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。