typescript通过父键

时间:2017-11-06 20:37:03

标签: javascript arrays typescript object parent

让我说我有这个变量

  this.mylist.push([{key:{"test1":name,"test":desc,"hi i am a test":other,"none":type,"amount":0} }]);

这将添加到数组mylist中 但是,我希望在某些条件下删除当前创建的列表,方法是通过唯一键删除它

我想拼接对象数组,以便删除该值以防止重复

我试过

this.mylist.splice(this.mylist.indexOf(key), 1);

但没有奏效 我尝试通过获取包含这些子值的唯一键来删除数组

我也试过

      this.mylist.splice(this.mylist.indexOf([{key}]), 1);

可以帮助我的人:(

      CheckBox(values,values,values) {

        this.bool = (this.mylist.indexOf(key) === -1);


        if (this.bool) { 
          this.mylist.push([{key:{"key":key,"naam":naam,"beschrijving":beschrijving,"type":type,"aantal":aantal} }]);
        }

        else {
this.mylist.splice(this.mylist.indexOf(key), 1);

        }
      }

上述功能是用户点击复选框时的事件。如果为true,则必须使用值填充数组。否则必须删除具有唯一键的数组以防止重复

1 个答案:

答案 0 :(得分:1)

在push语句之后,this.mylist将包含自推送以来的数组数组 [{key:{"test1":name,"test":desc,"hi i am a test":other,"none":type,"amount":0} }] 这是一个数组,你不能用密钥访问数组(在这种情况下你不能访问this.mylist [0],如果上面的数组作为第一个元素添加,使用this.mylist.indexOf(key))

一种可能的解决方案是你可以将mylist的类型作为对象而不是数组,然后你可以像这样添加元素

[{key:{"test1":name,"test":desc,"hi i am a test":other,"none":type,"amount":0} }];

this.mylist.key = {"test1":name,"test":desc,"hi i am a 
test":other,"none":type,"amount":0} }

稍后你可以使用像这样的复选框功能

CheckBox(values) {
    this.bool = (this.mylist.key === -1);
    if (this.bool) { 
        this.mylist.key={"key":key,"naam":naam,"beschrijving":beschrijving,"type":type,"aantal":aantal};
    } else {
        delete this.mylist.key; 
    }
}

Checkbox功能背后的逻辑似乎不正确,因为该函数将检查mylist是否包含密钥,如果它不存在则将密钥添加到mylist并删除它是否存在。如果这是你的最终目标,那么这种逻辑就无法正确处理重复项的删除。