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

使用filter方法后无法设置AirPassengerList的SeatPrice属性报错

问题解决:Cannot set properties of undefined (setting 'SeatPrice')

问题原因

你的代码中,postObject.AirPassengerList.filter(...)返回的数组为空,直接取[0]得到undefined,尝试给undefined设置SeatPrice属性就会抛出这个错误。本质是没有匹配到符合条件的乘客项。

解决方案

优化代码逻辑,增加存在性判断

用find替代filter(更高效,因为只找第一个匹配项),并先判断是否找到目标乘客再赋值:

const eventSeatSelectCallback = (SeatPrice, FlightNumber, SegmentKey) => {
  var postObject = { ...state.post };
  postObject.IsSeatSelected = true;

  // 查找符合条件的第一个乘客
  const targetPassenger = postObject.AirPassengerList.find(
    (x) =>
      x.FlightNumber === FlightNumber.toString() &&
      x.SegmentKey.toString() === SegmentKey.toString() &&
      x.IsSelected === true
  );

  // 确认找到乘客后再设置属性
  if (targetPassenger) {
    targetPassenger.SeatPrice = SeatPrice;
    dispatch({ type: "UPDATE_SEATFORPASSENGER", payLoad: postObject });
  } else {
    // 可选:处理未找到的情况,比如打日志
    console.warn("未找到匹配的乘客记录");
  }
};

额外排查点

  • 验证传入的FlightNumber、SegmentKey与AirPassengerList中元素的类型是否一致(比如一个是数字、一个是字符串,会导致匹配失败)。
  • 确认AirPassengerList中确实存在IsSelected为true,且FlightNumber、SegmentKey与传入参数匹配的项。

内容的提问来源于stack exchange,提问作者Essa Mohammad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:01:09