3 回答
TA贡献1797条经验 获得超4个赞
如果要使用tradition for loop循环对象。
您首先需要获取所有密钥,Object.keys(charMap)然后再遍历这些密钥。
function maxChar() {
const charMap = {a:1, b:3, a:1}
let max = 0
let maxChar = ''
const charMapKeys = Object.keys(charMap)
for(let i = 0; i < charMapKeys.length; i++) {
if(max < charMap[charMapKeys[i]]){
max = charMap[charMapKeys[i]]
maxChar = charMapKeys[i]
}
}
return maxChar
}
console.log(maxChar())
PS:但是建议您使用
for ... in
循环遍历对象,因为它更干净并且从一开始就受到支持。
TA贡献1848条经验 获得超6个赞
您可以在没有其他变量的情况下获得最大值。
为了拥有符合ES5的代码,请将所有变量声明更改为var语句。
function maxChar() {
var charMap = { a: 1, b: 3, a: 1 },
maxKey,
key;
for (key in charMap) {
if (!maxKey || charMap[maxKey] < charMap[key]) {
maxKey = key;
}
}
return key;
}
console.log(maxChar());
TA贡献1860条经验 获得超9个赞
该for .. in自EcmaScript的第一版循环语法一直存在。唯一需要适应的是:let和const更改它们var。
function maxChar() {
var charMap = {a:1, b:3, a:1};
var max = 0;
var maxChar = '';
for (var index in charMap) {
if (max < charMap[index]) {
max = charMap[index];
maxChar = index;
}
}
return maxChar
}
console.log(maxChar());
添加回答
举报