You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS使用三元运算符处理map返回值时数组出现undefined元素问题求解

问题根源

你的代码得到全是undefined的数组是两个错误共同导致的:

  • 三目运算符语法使用错误:三目运算符是表达式,不是流程控制语句,你不能在三目运算符的分支中直接写带return的代码块,这种写法不会生效,整个map的回调函数最终没有任何返回值,map方法会默认给每一项赋值undefined。
  • 逻辑和需求不符:你原本的非字符串分支写的是返回n.toString,既没有调用该方法,也和你预期的「非字符串返回空字符串」的需求完全不匹配。
正确写法

你可以直接用三目运算符返回对应值,箭头函数如果只有单个表达式可以省略大括号和return,直接返回表达式结果:

const newArr = ["abc", 12, 43, 8, 9, 0, 15, 23]
const newww = newArr.map(n => typeof n === "string" ? n : '')

如果你坚持要在箭头函数里保留大括号(使用块级作用域写法),需要把return放到三目运算符外层,不要写在三目运算符的分支里:

const newww = newArr.map(n => {
  return typeof n === "string" ? n : ''
})

处理后得到的newww就完全符合你的预期,不会出现undefined元素。

内容的提问来源于stack exchange,提问作者berboş

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 15:54:01