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

JavaScript中能否对Array.find的返回结果使用可选链完成赋值?

解答

报错原因

你写的写法不被JavaScript语法支持,可选链?.的返回值不能作为赋值操作的左值:当可选链左侧取值结果为undefined或null时,表达式会短路返回undefined,无法对undefined执行赋值操作,因此直接抛出错误。

符合要求的单行方案

用空值合并运算符??兜底临时空对象的写法就能满足你「无额外变量、无需提前判断」的需求:

let myArray = [{name: "foo", value: 30}, {name: "abc", value: 40}];
(myArray.find(entry => entry.name === 'foo') ?? {}).value = 50;

逻辑说明

  • 匹配到对应条目时,find返回原对象引用,赋值操作会直接修改原数组内对应对象的value值
  • 未匹配到条目时,兜底的临时空对象会承接赋值操作,不会抛出错误,也不会对原数组产生任何影响,符合预期。
    该写法全程仅执行一次查找逻辑,比调用两次find的逻辑与写法性能更优。

内容的提问来源于stack exchange,提问作者Francesca Kukral

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 06:45:02