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

React Native中如何按orderNo匹配更新数组对象或新增对象

实现方案
  • 首先校验传入的obj是否存在orderNo属性
  • 若存在,使用Array.findIndex()查找logicalAddress数组中orderNo匹配的元素下标
  • 如果找到匹配下标,直接用obj全量覆盖该下标的对象;如果没有找到匹配项,将obj插入数组末尾
  • 若obj不存在orderNo属性,直接将obj插入数组末尾

可运行代码示例

// 原有数组
const logicalAddress = [
  {
    orderNo: "AB1",
    RelNo: "001",
    denomination: "Testing",
    lineNo: "09",
    quantity: "4000"
  },
  {
    orderNo: "AB2",
    RelNo: "",
    denomination: "Testing",
    lineNo: "",
    quantity: "5000"
  }
]

// 待处理对象
const obj = {
  orderNo: "AB2",
  RelNo: "",
  denomination: "Testing",
  lineNo: "",
  quantity: "8000"
}

// 核心逻辑
if (obj.hasOwnProperty('orderNo')) {
  const matchIndex = logicalAddress.findIndex(item => item.orderNo === obj.orderNo)
  if (matchIndex !== -1) {
    // 匹配到则全量更新
    logicalAddress[matchIndex] = {...obj}
  } else {
    // 未匹配到则新增
    logicalAddress.push(obj)
  }
} else {
  // 无orderNo字段直接新增
  logicalAddress.push(obj)
}

执行结果说明

上述代码执行后,logicalAddress数组中orderNo为AB2的对象的quantity会被更新为8000,完全符合需求。如果不需要修改原数组,可以先对原数组做深拷贝再操作,避免产生副作用。

内容的提问来源于stack exchange,提问作者Abhigyan Gaurav

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 16:48:03