【发布时间】:2019-08-29 08:34:45
【问题描述】:
我的这段代码可以使用现代语法成功运行。
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}
如何返回与上一个示例相同的内容?
两者的唯一区别是前者使用了现代循环功能
【问题讨论】:
-
在第一种情况下,
char是一个字符串,因为for.. of行为,因为字符串是 iterables。在第二种情况下,char是一个 number,在 for 循环中用作 counter。您应该使用char来获取str索引:const _char = str[char]; charMap[_char] = 1。在此处阅读有关 for.. of 工作原理的更多信息:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
标签: javascript arrays string object ecmascript-6