Angular — совпадение строк списка Foreach

#angular #typescript

#angular #typescript

Вопрос:

Я хотел бы знать, как удалить «,» из последней записи вектора. Поскольку он печатает следующим образом: Имя навыка: навык 1, навык 2, навык 3, правильным было бы напечатать следующее: Имя навыка: навык 1, навык 2, навык 3

 list(skillSelect) {
    let naneSkil = "";
    
    arrayList.forEach((skill, index) => {
      if(skil.code === skillSelect.code) {
          nameSkill  = skill.name.concat(', ');   
      }
    });
    
    return nameSkill;
  }
 

Комментарии:

1. nameskill = ArrayList.filter(навык => навык.код === skilSelect.code).join(‘,’);

Ответ №1:

Перед возвратом просто напишите nameSkill = nameskill.substr(0, nameskill.length - 2) . Вы в основном берете подстроку исходной. В функции вы передаете начальную точку и конечную точку.

В вашем случае вам не нужны последние два символа, поэтому вы начинаете с самого начала слова ( 0 ) и заканчиваете в конце минус 2 ( nameskill.length-2 )

Документация здесь: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/substr

Имейте в виду, что есть другая функция, которая делает то же самое. Проверьте этот вопрос для этого аргумента: в чем разница между substr и substring ?

Комментарии:

1. Пожалуйста, объясните, что делает этот ответ, чтобы спрашивающий мог чему-то научиться из него.

Ответ №2:

Я считаю, что безопасным решением было бы использовать метод join для массивов, поэтому вам нужно сделать naneskill массивом, а не строкой. Соединение никогда не добавит ‘,’ к последнему элементу

 list(skillSelect) {
  let naneSkill = [];
    
  arrayList.forEach(skill => {
    if(skill.code === skillSelect.code) nameSkill.push(skill.name);
  });
    
  return nameSkill.join(',');
}