-1

I need to remove one item from nested object array by filtering key value

sample json

 [
    
    {
        "featureID": "e0152c71-657f-4bc2-b7f5-77e4d5a2a5a0",
        "feature": "TestTwo",
        "type": "TestTwo",
        "rules": [
            {
                "ruleId": "89919182-feb1-402c-b9ad-03ae62586f84",
                "ruleName": "Machine Guarding",
                "featureName": "TestTwo",
                "parameters": [
                   
                ]
            },
            {
                "ruleId": "e5361f7f-d8ae-424d-b781-a01987111181",
                "ruleName": "Eye&Face Protection",
                "featureName": "TestTwo",
                "parameters": [
                    
                ]
            },
           
        ]
    },
    {
        "featureID": "67d6e1bf-3919-4dcc-b636-236ab41d431b",
        "feature": "TestThree",
        "type": "TestThree",
        "rules": [
            {
                "ruleId": "4e00e08e-6a34-47cf-9012-0800bc0063f2",
                "ruleName": "Maximum People",
                "featureName": "TestThree",
                "parameters": [
                    
                ]
            },
            {
                "ruleId": "a9ab3ce2-e69c-4c0c-b561-1107baed1e68",
                "ruleName": "Redzone",
                "featureName": "TestThree",
                "parameters": [
                    
                ]
            }
        ]
    },
    
]

In above JSON, I need to remove an item from "rules" array by "ruleId" property. i.e : remove "ruleName":"Machine Guarding" item by that ruleId property.

I tried below

deleteItems(argId){
    this.done.find((items,d)=>items.feature == argID.featureName).rules.filter((int,ind)=>int.ruleId == argID.ruleId)
}

The above function passes the respective "ruleId" property.

Sathishkumar
  • 419
  • 2
  • 8
  • 20

1 Answers1

1

const data=[{featureID:"e0152c71-657f-4bc2-b7f5-77e4d5a2a5a0",feature:"TestTwo",type:"TestTwo",rules:[{ruleId:"89919182-feb1-402c-b9ad-03ae62586f84",ruleName:"Machine Guarding",featureName:"TestTwo",parameters:[]},{ruleId:"e5361f7f-d8ae-424d-b781-a01987111181",ruleName:"Eye&Face Protection",featureName:"TestTwo",parameters:[]}]},{featureID:"67d6e1bf-3919-4dcc-b636-236ab41d431b",feature:"TestThree",type:"TestThree",rules:[{ruleId:"4e00e08e-6a34-47cf-9012-0800bc0063f2",ruleName:"Maximum People",featureName:"TestThree",parameters:[]},{ruleId:"a9ab3ce2-e69c-4c0c-b561-1107baed1e68",ruleName:"Redzone",featureName:"TestThree",parameters:[]}]}];

const deleteItems = (ruleIdToFilter) => {
  return data.map((item) => {
    item.rules = item.rules.filter((rule) => ruleIdToFilter != rule.ruleId);
    return item;
  });
};

let response = deleteItems("89919182-feb1-402c-b9ad-03ae62586f84");
console.log(response);
adiga
  • 34,372
  • 9
  • 61
  • 83
  • 1
    Hi @avani, thanks for taking time to answer the question. You don't have to copy paste whole question in your answer to make it complete. deleteItems is the function with the logic to remove item. just respond only with that and also give a little explanation the logic like what does filter do in this situation. – Harish Barma Jan 04 '23 at 11:06