【问题标题】:How to Remove Elements from Array of Objects based on some condition如何根据某些条件从对象数组中删除元素
【发布时间】:2018-03-12 07:19:54
【问题描述】:

我在 Angular 中遇到了一个关键问题

我有以下数组

dataArray (3) [21, 21, 23]

以下是来自 API 的实际数据

ViewData = [  
      {  
         "id":5,
         "name":"Private",
         "description":"",

      },
      {  
         "id":7,
         "name":"Semi Private",
         "description":"",

      },
      {  
         "id":8,
         "name":"laboratory",
         "description":"",

      },
      {  
         "id":15,
         "name":"Test",

      },
      {  
         "id":16,
         "name":"Testss",
         "description":null,

      },
      {  
         "id":18,
         "name":"TestSan",
         "description":null,

      },
      {  
         "id":21,
         "name":"TestBBB",
         "description":"test",

      },
      {  
         "id":23,
         "name":"TestOne",
         "description":null,

      },
      {  
         "id":2,
         "name":"Standard ward",
         "description":"",
         "sharing":4,
         "set_value":2
      }
   ]

在处理 ViewData 后,我必须处理 ViewData(第二个数组)不应包含 ID 存在于 dataArray 中的 JSON 对象(我的意思是,如果 ViewData 的任何 ID 等于 DataArray 中的 ID,我想删除该 JSON 对象从查看数据) (输出应如下所示)

ViewData = [  
      {  
         "id":5,
         "name":"Private",
         "description":"",

      },
      {  
         "id":7,
         "name":"Semi Private",
         "description":"",

      },
      {  
         "id":8,
         "name":"laboratory",
         "description":"",

      },
      {  
         "id":15,
         "name":"Test",

      },
      {  
         "id":16,
         "name":"Testss",
         "description":null,

      },
      {  
         "id":18,
         "name":"TestSan",
         "description":null,

      },

      {  
         "id":2,
         "name":"Standard ward",
         "description":"",
         "sharing":4,
         "set_value":2
      }
   ]

【问题讨论】:

标签: javascript angular typescript


【解决方案1】:

您可以为此使用filter()includes() 方法

const arryids = {1,3,9};//remove id array 
const filteredarray = this.ViewData.filter(d=> !array.includes(d.id));
this.ViewData= filteredarray;

【讨论】:

    【解决方案2】:

    使用filter

    ViewData = ViewData.filter( s => !dataArray.includes( s.id ) ) 
    

    【讨论】:

    • 这有助于我的场景根据其他条目的条件从数组中删除对象。
    【解决方案3】:

    filterincludes 组合使用。 filter 将根据条件返回一个新数组。条件返回 true 的那些项目将被添加到输出数组中。

    const ids = [21, 23];
    const viewData = [  
          {  
             "id":5,
             "name":"Private",
             "description":"",
    
          },
          {  
             "id":7,
             "name":"Semi Private",
             "description":"",
    
          },
          {  
             "id":8,
             "name":"laboratory",
             "description":"",
    
          },
          {  
             "id":15,
             "name":"Test",
    
          },
          {  
             "id":16,
             "name":"Testss",
             "description":null,
    
          },
          {  
             "id":18,
             "name":"TestSan",
             "description":null,
    
          },
          {  
             "id":21,
             "name":"TestBBB",
             "description":"test",
    
          },
          {  
             "id":23,
             "name":"TestOne",
             "description":null,
    
          },
          {  
             "id":2,
             "name":"Standard ward",
             "description":"",
             "sharing":4,
             "set_value":2
          }
       ];
       
    const filteredData = viewData.filter(item => !ids.includes(item.id));
    
    console.log(filteredData);

    【讨论】:

    • 非常感谢大家的支持,它运行良好,很高兴我是 JavaScript 新手
    【解决方案4】:
    if(condition){
    var key = "your_key";
    delete json[key];
    }
    

    【讨论】:

    • 您的代码删除了键值数组中的一项。 OP想要从对象数组中删除一个项目(每个都是一个键值数组)......有区别
    猜你喜欢
    • 2019-07-02
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 2020-11-21
    • 2023-03-27
    相关资源
    最近更新 更多