#javascript
#javascript
Вопрос:
У меня есть этот код, который успешно работает.
function maxChar() {
const charMap = {a:1, b:3, a:1}
let max = 0
let maxChar = ''
for(let index in charMap) {
if(max < charMap[index]){
max = charMap[index]
maxChar = index
}
}
return maxChar
}
console.log(maxChar())
Он возвращается на консоль b
, которая является буквой, которая повторяется чаще всего.
Но я хотел сделать то же самое со старым синтаксисом.
Как бы мне заменить это?
for(let index in charMap) {//....
и остальной код
Комментарии:
1. Замените все
const
иlet
наvar
.2. какой старый синтаксис вы хотите использовать …?
for(var i = 0; i < Object.keys(charMap).length; i )
3. Это может быть что-то более старое, чем этот пример, в котором не используется ‘let index in ..’.
4. @trincot Я сохраню его. я хочу изменить только основные части, которые являются циклом, и то, что находится внутри него.
5. кстати, формулировка предполагает, что вы берете индекс. это может быть правильно для массивов, но для объектов вы получаете ключ или имя свойства.
Ответ №1:
Если вы хотите использовать 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
цикл для перебора объектов, так как он намного чище и поддерживается с самого начала.
Ответ №2:
Синтаксис 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());
Ответ №3:
Вы можете использовать ключ без другой переменной для максимального значения.
Чтобы иметь код, совместимый с 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());