Javascript 删除angular 4中数组列表中的错误项

Javascript 删除angular 4中数组列表中的错误项,javascript,arrays,angular,slice,Javascript,Arrays,Angular,Slice,我有下面这样的列表项数组 L3 - LO L7 - LO L7 - L3 % L3 - LO % L7 - LO % L7 - L3 我正试图用下面的代码在angular 4中使用拼接方法删除 但也有一些人知道它是如何删除其他项目的。我只想删除包含L3的字符串,它也正在删除此项%L7-LO if (e.target.value === "L3") { debugger; let l7L3112Index = this.formulalist.findIndex(it

我有下面这样的列表项数组

L3 - LO
 L7 - LO
 L7 - L3
 % L3 - LO
 % L7 - LO
 % L7 - L3
我正试图用下面的代码在angular 4中使用拼接方法删除

但也有一些人知道它是如何删除其他项目的。我只想删除包含L3的字符串,它也正在删除此项
%L7-LO

 if (e.target.value === "L3") {
    debugger;
    let l7L3112Index = this.formulalist.findIndex(item => item.Name === "L7 - L3");
    let l7l32456Index = this.formulalist.findIndex(item => item.Name === "% L7 - L3");
    let l3ls28Idex = this.formulalist.findIndex(item => item.Name === "L3 - LS");
    let l3ls23Idex = this.formulalist.findIndex(item => item.Name === "% L3 - LS");
    let l3Lo87Index = this.formulalist.findIndex(item => item.Name === "L3 - LO");
    let l3lO287Index = this.formulalist.findIndex(item => item.Name === "% L3 - LO");
    this.formulalist.splice(l3lO287Index, 1);
    this.formulalist.splice(l7L3112Index, 1);
    this.formulalist.splice(l7l32456Index, 1);
    this.formulalist.splice(l3ls28Idex, 1);
    this.formulalist.splice(l3ls23Idex, 1);
    this.formulalist.splice(l3Lo87Index, 1);

  }
请任何人就这个问题提出意见好吗。
非常感谢您,因为一旦您开始从列表中删除元素,元素的索引将发生更改,因此您的方法将不起作用。所以你不应该使用变量来保存索引,因为每次删除后它们都会改变。如果您只想删除包含
L3
的项目,则可以将其过滤掉

下面是一个示例,假设您的对象具有
名称
属性:

let formulalist = [
    { Name: "L3 - LO" }, 
    { Name: "L7 - LO" }, 
    { Name: "L7 - L3" }, 
    { Name: "% L3 - LO" }, 
    { Name: "% L7 - LO" }, 
    { Name: "% L7 - L3" }
];
formulalist = formulalist.filter(item => item.Name.indexOf('L3') == -1)
结果是以下数组:

[ {Name: "L7 - LO"}, {Name: "% L7 - LO"} ]

您的方法将不起作用,因为一旦开始从列表中删除元素,元素的索引将更改。所以你不应该使用变量来保存索引,因为每次删除后它们都会改变。如果您只想删除包含
L3
的项目,则可以将其过滤掉

下面是一个示例,假设您的对象具有
名称
属性:

let formulalist = [
    { Name: "L3 - LO" }, 
    { Name: "L7 - LO" }, 
    { Name: "L7 - L3" }, 
    { Name: "% L3 - LO" }, 
    { Name: "% L7 - LO" }, 
    { Name: "% L7 - L3" }
];
formulalist = formulalist.filter(item => item.Name.indexOf('L3') == -1)
结果是以下数组:

[ {Name: "L7 - LO"}, {Name: "% L7 - LO"} ]
就你的问题进行了一次突击检查

如果你的公式列表是一个对象数组

formulaList = [
    { name: 'L3 - LO' },
    { name: 'L7 - LO' },
    { name: 'L7 - L3' },
    { name: '% L3 - LO' },
    { name: '% L7 - LO' },
    { name: '% L7 - L3' }
];
您可以使用Array.filter和Regex对其进行筛选

this.formulaList = this.formulaList.filter(({ name }) => !name.match(/L3/g));
然后,它将显示不带L3s关键字的列表

已经针对您的问题进行了一次突击检查

如果你的公式列表是一个对象数组

formulaList = [
    { name: 'L3 - LO' },
    { name: 'L7 - LO' },
    { name: 'L7 - L3' },
    { name: '% L3 - LO' },
    { name: '% L7 - LO' },
    { name: '% L7 - L3' }
];
您可以使用Array.filter和Regex对其进行筛选

this.formulaList = this.formulaList.filter(({ name }) => !name.match(/L3/g));
然后,它将显示不带L3s关键字的列表

如果我理解正确,您可以执行
this.formulalist=this.formulalist.filter(I=>!I.includes(“L3”)
删除其中包含
“L3”
的所有数组项。查找索引和切片,然后在切片列表和切片上查找索引,依此类推。。。或者将索引和切片按相反顺序排序。。。。是的,如果只需要删除L3,那么为什么要删除所有这些?如果我理解正确,你可以只做
this.formulalist=this.formulalist.filter(I=>!I.includes(“L3”)
,删除其中包含
“L3”
的所有数组项。findIndex和slice,然后在切片列表和slice上findIndex,依此类推。。。或者将索引和切片按相反顺序排序。。。。是的,如果只需要删除L3,那么为什么要这么做?我需要它的相反方向实际上我需要这些项目
L7-LO
%L7-LO
我编辑了我的答案和stackblitz演示链接,现在它只显示了你提到的那两个我需要相反的东西实际上我需要这些物品
L7-LO
%L7-LO
我编辑了我的答案和stackblitz演示链接,现在它只显示了你提到的那两个