[英]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.