в машинописном тексте Повторение данных из одной строки в другую

#arrays #typescript

Вопрос:

У меня есть массив объектов в react typescript. В каждой строке у меня есть кнопка повтора, я хочу скопировать данные из текущей строки и вставить их во все остальные оставшиеся строки. введите описание изображения здесь

Мне нужно написать функцию для моего компонента react typescript. На картинке вы можете видеть кнопку rpt, например, если у меня 5 строк, и я нажимаю кнопку rpt в 3-й строке, она принимает значение года и параметра и вставляет в 4-ю и 5-ю строки. Если я нажму кнопку rpt в 4-й строке, то она скопирует год и значение параметра из 4-й строки и вставит в 5-ю.

 const repeatData = (index: number) => {
setSubjects((s) => {
  const newState = [...subjects];
  const clickedRow = { ...subjects[index] };
  index = index   1;
  while (index < subjects.length) {
    const currentRow = { ...subjects[index] };
    currentRow.Type = clickedRow.Type;
    currentRow.Year = clickedRow.Year;
    currentRow.Option = clickedRow.Option;
    newState.splice(index, 1, currentRow);
  }
  return newState;
});
 

};

   const repeatData = (event: SyntheticEvent, index: number) => {
setSubjects((s) => {
  event.preventDefault();
  const newState = [...subjects];
  const clickedRow = { ...subjects[index] };
  while (index < subjects.length) {
    const currentRow = { ...subjects[index] };
    index = index   1;
    currentRow.Type = clickedRow.Type;
    currentRow.Option = clickedRow.Option;
    currentRow.Year = clickedRow.Year;
    newState.splice(index, 1, currentRow);
  }
  return newState;
});
 

};

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

1. что вы пробовали? можете ли вы показать нам свой код?

2. Я добавил свой код функции выше, пожалуйста, посмотрите.

3. Второй блок кода работает нормально. Я просто хочу проверить, есть ли какой-то более эффективный способ сделать это.

Ответ №1:

   const repeatData = (event: SyntheticEvent, index: number) => {
setSubjects((s) => {
  event.preventDefault();
  const newState = [...subjects];
  const clickedRow = { ...subjects[index] };
  while (index < subjects.length) {
    const currentRow = { ...subjects[index] };
    index = index   1;
    currentRow.Type = clickedRow.Type;
    currentRow.Option = clickedRow.Option;
    currentRow.Year = clickedRow.Year;
    newState.splice(index, 1, currentRow);
  }
  return newState;
});
 

};

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

1. Пожалуйста, добавьте дополнительные сведения, чтобы расширить свой ответ, например, ссылки на рабочий код или документацию.