[英]Deleting an object from array of objects based on values of entire object
我有一組包含如下 id 的對象:
selectedParameters = [
{
operationID: "5f1def6a3f15e2fde38d8b13",
operatorID: "5f241ea9a28f1a5700bfb82a"
},
{
operationID: "5f1def6a3f15e2fde38d8b13",
operatorID: "5f241ea9a28f1a5700bfb829"
},
{
operationID: "5f1def6a3f15e2fde38d8b13",
operatorID: "5f241ea9a28f1a5700bfb828"
},
{
operationID: "5f1def7c3f15e2fde38d8b14",
operatorID: "5f241ea9a28f1a5700bfb82a"
},
{
operationID: "5f1def7c3f15e2fde38d8b14",
operatorID: "5f241ea9a28f1a5700bfb829"
},
]
我有一個方法,它接收具有上述確切屬性的 object,然后我想檢查傳入 object 的 operationID 和 operatorID 並在完全匹配的情況下從上述數組中刪除 object。 我有一種方法試圖做到這一點,如下所示:
const deleteSelectedParameter = (removedParamObj) => {
selectedParameters.filter(
(selectedParam) =>
(selectedParam.operationID !==
removedParamObj.operationID) &&
(selectedParam.operatorID !== removedParamObj.operatorID)
)
};
但是,我在刪除它時會刪除多個對象,即使只有一個匹配。
二進制邏輯有一些錯誤。 您可以嘗試以下代碼:
常量 deleteSelectedParameter = (removedParamObj) => {
return selectedParameters.filter(
(selectedParam) =>
!((selectedParam.operationID === removedParamObj.operationID) && (selectedParam.operatorID === removedParamObj.operatorID))
)
};
這是一個基本的二進制邏輯錯誤。
您想要filter()
的回調是這樣的:
如果 opID 等於且 operID 等於,則返回 false。
return == !(opIDEq && operIDEq) == opIDNeq || operIDNeq
return == !(opIDEq && operIDEq) == opIDNeq || operIDNeq
。
你所做的是return == operIDNeq && operIDNeq
。
所以基本上,將你的&&
更改為||
.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.