【问题标题】:removing wrong items from the array list in angular 4从角度 4 的数组列表中删除错误的项目
【发布时间】:2018-10-09 02:30:55
【问题描述】:

我有如下列表项数组

L3 - LO
 L7 - LO
 L7 - L3
 % L3 - LO
 % L7 - LO
 % L7 - L3

我正在尝试使用以下角度 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);

  }

任何人都可以就这个问题提出任何想法。 非常感谢提前

【问题讨论】:

  • 如果我理解正确,您可以使用this.formulalist = this.formulalist.filter(i => !i.includes("L3")) 删除所有包含"L3" 的数组项。
  • findIndex and slice 然后 findIndex on sliced list and slice 依此类推...或以相反的顺序对索引和切片进行排序....是的,如果只需要删除 L3 那么为什么这一切?

标签: javascript arrays angular slice


【解决方案1】:

已针对您的问题提供了 StackBlitz demo

如果你的 formulaList 实例是一个对象数组

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 关键字的列表

【讨论】:

  • 我需要它实际上我需要这些项目L7 - LO% L7 - LO
  • 我也编辑了我的答案和 stackblitz 演示链接,现在它只显示你提到的那两个
【解决方案2】:

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

这是一个示例,假设您有具有Name 属性的对象:

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"} ]

【讨论】:

    猜你喜欢
    • 2017-12-28
    • 1970-01-01
    • 2017-03-20
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    • 2020-08-29
    • 1970-01-01
    相关资源
    最近更新 更多