簡體   English   中英

根據整個 object 的值從對象數組中刪除 object

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

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