【问题标题】:How to remove objoct from object by finding in type script如何通过在打字稿中查找从对象中删除对象
【发布时间】:2018-08-06 19:11:36
【问题描述】:

这是我的对象

 "filterValue":[
 {"label":"--Select a Member--","value":""},
 {"label":"ghi.jkl","value":{"Id":"1",}},
 {"label":"abc.def","value":{"Id":"2",}},
 {"label":"asd.vdf","value":{"Id":"3",}},
 ]

从此我想搜索 value.Id = 2 的位置,并且我想删除该对象行。

我该怎么做..?

注意:第一个值将为空,值中没有数据。

我尝试过这样的事情:

filterValue.splice( filterValue.indexOf(2), 1 );

【问题讨论】:

    标签: json typescript object slice indexof


    【解决方案1】:

    在这种情况下,您不能使用 indexOf,因为您正在检查一个复杂的对象,但您可以像这样使用 findIndex

    filterValue.splice( filterValue.findIndex(a => a.Id == 2), 1 );
    

    您可能希望更改代码,通过检查 findIndex 是否返回大于(或等于)0 的值来检查是否确实找到了某些东西。

    【讨论】:

      【解决方案2】:

      您可以使用filter 获取新的过滤数组(filteredArr):

      var arr = [
         {"label":"--Select a Member--","value":""},
         {"label":"ghi.jkl","value":{"Id":"1",}},
         {"label":"abc.def","value":{"Id":"2",}},
         {"label":"asd.vdf","value":{"Id":"3",}} 
      ];
      
      var filteredArr = arr.filter((x) => JSON.stringify(x.value) !== JSON.stringify({"Id":"2"}));
      
      console.log(filteredArr);
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

      【讨论】:

        【解决方案3】:

        在您的具体示例中,您需要避免一些巧妙的陷阱。

        项目的结构不同,所以你需要注意“--Select a Member--”项目没有问题,它没有value.Id

        下面的例子廉价地解决了类型问题(数组成员之间最好的通用类型不包含你感兴趣的属性)。

        const items = [
            { "label": "--Select a Member--", "value": "" },
            { "label": "ghi.jkl", "value": { "Id": "1", } },
            { "label": "abc.def", "value": { "Id": "2", } },
            { "label": "asd.vdf", "value": { "Id": "3", } },
        ];
        
        const filtered = items.filter((i: any) => !i.value || !i.value.Id || i.value.Id !== '2');
        
        console.log(filtered);
        

        输出:

        [
            {"label":"--Select a Member--","value":""},
            {"label":"ghi.jkl","value":{"Id":"1"}},
            {"label":"asd.vdf","value":{"Id":"3"}}
        ]
        

        【讨论】:

          【解决方案4】:
          const obj = {
            filterValue: [
              { label: "--Select a Member--", value: "" },
              { label: "ghi.jkl", value: { Id: "1" } },
              { label: "abc.def", value: { Id: "2" } },
              { label: "asd.vdf", value: { Id: "3" } }
            ]
          };
          
          var changedObj = obj.filterValue.filter((data, index) => {
            return data.value.Id != "1";
          });
          
          console.log(changedObj);
          

          【讨论】:

            猜你喜欢
            • 2017-10-27
            • 2018-08-20
            • 2019-06-16
            • 2023-03-28
            • 1970-01-01
            • 2021-05-13
            • 1970-01-01
            • 2018-07-23
            相关资源
            最近更新 更多