удаление неправильных элементов из списка массивов в угловых 4 - PullRequest
0 голосов
/ 09 октября 2018

У меня есть массив элементов списка, подобных этому ниже

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);

  }

Может ли кто-нибудь предложить какие-либо идеи по этой проблеме.Большое спасибо заранее

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Предоставил StackBlitz демо в соответствии с вашей заботой.

Если экземпляр вашего FormList представляет собой массив объектов

formulaList = [
    { name: 'L3 - LO' },
    { name: 'L7 - LO' },
    { name: 'L7 - L3' },
    { name: '% L3 - LO' },
    { name: '% L7 - LO' },
    { name: '% L7 - L3' }
];

Вы можете отфильтровать его с помощью массива.filter and Regex

this.formulaList = this.formulaList.filter(({ name }) => !name.match(/L3/g));

Тогда он покажет вам список без ключевого слова L3s enter image description here

0 голосов
/ 09 октября 2018

Ваш подход не будет работать, потому что индекс элементов изменится, как только вы начнете удалять элементы из списка.Поэтому не следует использовать переменные для сохранения индексов, потому что они будут меняться после каждого удаления.Если вам нужно только удалить элементы, содержащие 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"} ]
...