簡體   English   中英

如何在數組 object 中找到元素並更新 Javascript 中的源數組

[英]How do I find element in array object and update source array in Javascript

我正在嘗試在目標數組中查找元素並在源數組中更新。

let sourceArray = [
  {
    "userId": "123",
    "applicationId": "abc",
    "selections": [
      {
        "applicationId": 70930,
        "creationDate": "2021-01-28",
        "responseStatus": "PENDING"
      }
    ]
  }
]

let array2 = [
  {
      "applicationId": 70930,
      "code": "TEST CODE",
      "creationDate": "2021-01-28",
      "submissionDate": "2021-01-29",
      "status": "SUBMITTED",
      "outcomeStatus": "PENDING",
      "responseStatus": "PENDING"
  }
]

我的預期結果是選擇在源數組中更新,並根據 applicationId 使用來自 array2 的匹配元素

[
  {
    "userId": "123",
    "applicationId": "abc",
    "selections": [
      {
        "applicationId": 70930,
        "code": "TEST CODE",
        "creationDate": "2021-01-28",
        "submissionDate": "2021-01-29",
        "status": "SUBMITTED",
        "outcomeStatus": "PENDING",
        "responseStatus": "PENDING"
      }
    ]
  }
]

我嘗試使用下面的代碼更新數組

const newArray = sourceArray.map(item => {
  let item2 = array2.find(i2 => item.selections.some(id => i2.applicationId === id.applicationId));
  return item2 ? { ...item, ...item2 } : item;
});

你可以試試這個。 只需記住在銷毀時跟蹤其他信息

 let sourceArray = [ { userId: "123", applicationId: "abc", selections: [ { applicationId: 70930, creationDate: "2021-01-28", responseStatus: "PENDING", }, ], }, ]; let array2 = [ { applicationId: 70930, code: "TEST CODE", creationDate: "2021-01-28", submissionDate: "2021-01-29", status: "SUBMITTED", outcomeStatus: "PENDING", responseStatus: "PENDING", }, ]; sourceArray = sourceArray.map(({ selections, ...otherInfo }) => ({...otherInfo, selections: selections.map((selection) => ({...selection, ...array2.find((el) => el.applicationId === selection.applicationId), })), })); console.log(sourceArray)

暫無
暫無

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

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