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
相关产品推荐
相关产品推荐

