Алгоритм замены строчных индексов - PullRequest
0 голосов
/ 03 декабря 2018

В общем:

У меня есть текст

Sample1 Text1 Line 1
Sample2 Text2 Line 2
Sample3 Text3 Line 3

и массив ['LEFT', 'RIGHT', 'CENTER'], представляющий выравнивания ..

Предположим, я удалил Line 1 Sample2что делает текст следующим:

Sample1 Text1 
Text2 Line 2
Sample3 Text3 Line 3

Массив выравнивания должен оставаться прежним: ['LEFT', 'RIGHT', 'CENTER'] Но, если я удалю вторую строку, массив должен измениться на ['LEFT','CENTER']

И наоборот ... при добавлении строки между строкой 1 и 2 следует изменить массив на ['LEFT', 'LEFT', 'RIGHT', 'CENTER'], взяв выравнивание из "расширенной" строки ...

Да ... Iзнаю ... сбивает с толку ...

https://jsfiddle.net/redlive/yuz08axc/

1 Ответ

0 голосов
/ 03 декабря 2018

Хочешь это

let text = 'a\nb\nc\n'
const textAsArray = text.split('\n')
const alignments = ['left', 'right', 'center']

// initial
console.log('initial state:', text, alignments)

// remove second line
removeLine(1)
console.log('removed second line:', text, alignments)


// add second line
addLine(1, 'b')
console.log('added second line:', text, alignments)

function removeLine(num) {
  textAsArray.splice(num,1)
  alignments.splice(num,1)
  text = textAsArray.join('\n')
}


function addLine(num, val) {
  textAsArray.splice(num, 0, val)
  alignments.splice(num, 0, alignments[num ? num - 1 : 'left' /* left is default */ ])
  text = textAsArray.join('\n')
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...