JavaScript数组转字符串后无法移除其中引号问题咨询
问题原因分析
核心问题1:flatMap用法错误
flatMap 的执行逻辑是先执行map操作,再执行深度为1的flat操作。你在回调中匹配到目标用户时返回的是字符串user.name,而字符串属于可迭代对象,扁平化操作会把它拆成单个字符组成的数组:
- 匹配到userid为32的用户时,返回
"john",扁平化后得到数组['j','o','h','n'] - 后续调用
toString()后得到的是逗号分隔的字符串"j,o,h,n",并非你预期的完整"john"字符串
核心问题2:你看到的引号是控制台的显示特性,不属于字符串实际内容
JavaScript原生字符串本身不会自带引号,浏览器/Node控制台为了让开发者区分字符串和其他数据类型,打印字符串时会默认在前后加上引号,这部分是仅用于显示的格式标识,不属于字符串值本身。你可以加一行测试代码验证:
console.log(result.replaceAll("\"", "") === "john")
如果返回true就可以证明字符串实际没有多余引号。
正确实现
直接用find方法过滤目标用户即可,不需要额外做引号移除处理:
const users = [{ "userid": "45", "name": "steve" }, { "userid": "32", "name": "john" }]; const targetUser = users.find(user => user.userid === '32'); const result = targetUser ? targetUser.name : ''; console.log(result)
内容的提问来源于stack exchange,提问作者Cain Nuke
相关产品推荐
相关产品推荐

