我有这段代码,它使用现代语法成功运行。
function maxChar(str) {
const charMap = {}
for(let char of str){
charMap[char] = 1
}
return charMap
}
console.log(maxChar('acdef'))
它返回一个像这样的对象:
{a:1,c:1,d:1,e:1,f:1}
我想做同样的事情,但使用旧语法。我就是那样做的,但没有用。
function maxChar(str) {
const charMap = {}
for(let char=0; char < str.length; char++){
charMap[char] = 1
}
return charMap
}
console.log(maxChar('acdef'))
它被退回了:
{0:1,1:1,2:1,3:1,4:1}
如何返回与上一个示例相同的内容?
两者之间的唯一区别是前者使用了现代循环功能
最佳答案
因为 for...of
有一个字符串,char
被赋值为 str[index]
。要对旧语法执行相同操作,请使用 charMap[str[char]]
:
function maxChar(str) {
const charMap = {}
for (let char = 0; char < str.length; char++) {
charMap[str[char]] = 1;
}
return charMap;
}
console.log(maxChar('acdef'));
还可以简化函数:
function maxChar(str) {
const charMap = {};
str.split("").forEach(function(char) {
charMap[char] = 1;
});
return charMap;
}
console.log(maxChar('acdef'))
关于javascript - 循环的现代语法与旧语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55569270/