老师能把这里的逻辑解释一下吗

来源:2-8 for-of

unbreakable_全栈

2020-10-27 23:45:42

# 具体遇到的问题

# 报错信息的截图

# 相关课程内容截图

# 尝试过的解决思路和结果

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

 oStr.forEach((wordindex=> {

         // console.log(word, index)

         // console.log(map[word])

         // console.log(oStr[index])

         if (words.includes(word)) oStr[index] = map[word]

      })

      console.log(oStr)


写回答

1回答

好帮手慕码

2020-10-28

同学你好,解答如下:

1、首先可以整体理解代码的意思:本段代码,使用includes方法判断字符串words中是否包含传入的word, 如果包含, 就将字母对应的数字存入oStr数组中,实现加密。例如word是P, 那么就会在map对象中找到字母P对应的数字, 替换oStr数组中的字母。

2、然后再拆分开理解。先了解下forEach的用法:

arr.forEach(callback(currentValue [, index [, array]])[,thisArg]);

callback 为数组中每个元素执行的函数,该函数接收三个参数:

  • currentValue 数组中正在处理的当前元素。

  • index 可选 数组中正在处理的当前元素的索引。

  • array 可选  forEach() 方法正在操作的数组。

所以第一个参数代表的是word代表的是数组中每一项,第二个参数index代表的是索引:

http://img.mukewang.com/climg/5f98cdec09b9c0fa08760103.jpg

oStr是字符串分割成的数组

http://img.mukewang.com/climg/5f98cdfb09e4687504350028.jpg

map对象中,属性名是字母

http://img.mukewang.com/climg/5f98ce0d0989580713580075.jpg

所以map[word]的意思是通过属性名获取属性值,然后给oStr[index]重新赋值,将里面的字母替换成数值。从而oStr数组变为

http://img.mukewang.com/climg/5f98ce20097ededa05590072.jpg

祝学习愉快~

1

0 学习 · 10739 问题

查看课程