我正在尝试获取map
中具有最大值的密钥,我通过new Map()
创建了该密钥,并添加了密钥&
现在,我想得到值最大的键,如果两个键的值相同,那么我想返回字典中最大的键。
例如:{'a': 20, 'b':20}
,那么我希望返回b
。
我的代码:
var slowestKey = function(releaseTimes, keysPressed) {
let map=new Map();
map.set(keysPressed[0],releaseTimes[0]);
for(let i=0; i<releaseTimes.length-1; i++){
let time=releaseTimes[i+1]-releaseTimes[i];
map.set(keysPressed[i+1],time);
}
let max= Math.max(...map.values());
console.log(map)
console.log(Math.max(...map.values()));
};
输入:
Input: releaseTimes = [9,29,49,50], keysPressed = "cbcd"
Expected Output: "c"
console.log:
Map(3) { 'c' => 20, 'b' => 20, 'd' => 1 }
20
如何获取值最大且按字典顺序更大的密钥?
通过拥有一个键/值对数组,您可以按进行排序
- 值递减
- 按键下降
并取第一对(索引0
)。
const
pairs = [['c', 9], ['b', 29], ['c', 49], ['d', 50], ['a', 50]];
pairs.sort((a, b) => b[1] - a[1] || b[0].localeCompare(a[0]));
console.log(pairs[0]);
使用filter
可以过滤值=max
的keys
,然后可以过滤sort
,并获得第一项。
所以,额外的代码将是
const [key] = [...map.keys()].filter(key => {
return map.get(key) === max
}).sort((a, b) => a - b)
var slowestKey = function(releaseTimes, keysPressed) {
let map=new Map();
map.set(keysPressed[0],releaseTimes[0]);
for(let i=0; i<releaseTimes.length-1; i++){
let time=releaseTimes[i+1]-releaseTimes[i];
map.set(keysPressed[i+1],time);
}
let max= Math.max(...map.values());
const [key] = [...map.keys()].filter(key => {
return map.get(key) === max
}).sort((a, b) => a - b)
console.log(key)
};
slowestKey([9,29,49,50], "cbcd")