如何访问map函数内部声明的变量并在外部使用 对比两个map的赋值结果
现有代码问题
- 作用域不匹配:你在
map回调函数内部用const声明的myFollowers、myFollowings是块级作用域变量,仅在回调函数的大括号范围内生效,外部的对比逻辑无法访问到这两个变量,运行时会直接报变量未定义的错误。 - 遍历逻辑无效:
map方法用于生成新数组,你现有写法没有收集遍历得到的Userlink值,且每次遍历都会重新声明同名变量,就算作用域合法也只能保留最后一次遍历的赋值结果。 - 对比逻辑不符合常规需求:常规场景下你应该是要判断目标用户是否同时出现在你的粉丝列表和关注列表里,现有写法完全无法实现该需求。
修复方案
如果你的需求是判断目标用户是否和你互关,用Set存储全量的链接来做高效匹配,参考代码如下:
// 收集所有粉丝的Userlink存入Set const followerLinkSet = !followerLoading ? new Set(followersData.map(item => item.requested_profile.Userlink)) : new Set() // 收集所有关注的Userlink存入Set const followingLinkSet = !followingLoading ? new Set(followingData.map(item => item.requesting_profile.Userlink)) : new Set() // 此处替换为你实际要判断的目标用户的Userlink变量 const targetUserLink = 'xxx' const btntext = followerLinkSet.has(targetUserLink) && followingLinkSet.has(targetUserLink) ? "Following" : "Follow"
如果你仅需要对比两个数组第一个条目的Userlink,可以用更简化的写法:
const myFollowers = !followerLoading && followersData.length ? followersData[0].requested_profile.Userlink : '' const myFollowings = !followingLoading && followingData.length ? followingData[0].requesting_profile.Userlink : '' const btntext = myFollowers === myFollowings ? "Following" : "Follow"
内容的提问来源于stack exchange,提问作者Pratham Sampat
相关产品推荐
相关产品推荐

