簡體   English   中英

如何在反應本機中使用新對象更新數組對象

[英]how to update object of array with new object in react native

我有一個包含 2 個對象的數組 logicalAddress,現在我有另一個具有某些值的對象 obj,我必須將數組 logicalAddress 添加為新對象或更新現有對象。 如果 obj 中的 orderNo 可用並且它與數組中的任何 orderNo 匹配,那么它應該更新完整的對象,否則它應該添加新的 obj。 請幫忙 。 越來越糊塗了。

logicalAddress 
0:
orderNo: "AB1"
RelNo: "001"
denomination: "Testing"
lineNo: "09"
quantity: "4000"

1:
orderNo: "AB2"
RelNo: ""
denomination: "Testing"
lineNo: ""
quantity: "5000"


const obj ={

orderNo: "AB2"
RelNo: ""
denomination: "Testing"
lineNo: ""
quantity: "8000"

}

因此,您將需要遍歷 logicalAddress 數組中的每個項目並將其與您的對象進行比較。 就像您說的,為了進行比較,我們要查找 orderNo 是否存在以及它是否與數組中的任何 orderNo 匹配。 假設您使用的 ES6 可能看起來像。

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',
};

let objMatch = false;

if (obj.orderNo) { // If we have an order number
  logicalAddress.forEach((address, i) => { // Loop array
    if (address.orderNo === obj.orderNo) { // If address and obj numbers match
      // Update value
      logicalAddress[i] = obj;
      objMatch = true;
    }
  });
}

if (!objMatch) { // If after looping through we have no match
  logicalAddress.push(obj); // Add obj to array
}
let 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',
};

查找記錄是否出現在數組中。 如果是,則使用findIndex獲取它的索引並刪除它並推送 else 直接推送它。

const objIndex = logicalAddress.findIndex(address => address.orderNo === 
obj.orderNo);

if(objIndex !== -1){
  logicalAddress.splice(objIndex);
 }

 logicalAddress.push(obj);

 console.log(logicalAddress);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM