responsejs - учитывая набор индексов, добавляя другое className к подстроке в зависимости от требования - PullRequest
0 голосов
/ 28 августа 2018

Извините, noob, чтобы реагировать.

Из вчерашней публикации

javascript - преобразование строки в массив кортежей

Я успешно передал массив массивов в сторону внешнего интерфейса.

Теперь у меня есть что-то вроде [[0,5,'1'], [7,10,'1'], [12,13,'2']] и т. Д.

элементы в массиве [start_index, end_index, type], эти индексы соответствуют строке типа I love you guys so much I do not want to leave you или что-то в этом роде.

Теперь я хочу добавить теги вactjs, основанные на типе, поэтому для индексов [0, 5) это тип 1, который соответствует, скажем, bold, а [12, 13) - тип 2, который отображает, скажем, зеленый цвет.

Мой код вроде как

MATCHING_STRING = 'Я так вас люблю, ребята, что не хочу с вами расставаться'; GIVEN_ARRAY = "[[0,5, '1'], [7,10, '1'], [12,13, '2']]"

let idx = GIVEN_ARRAY.replace(/'/g, '"'); //got some single quote to replace to use JSON.parse
idx = JSON.parse(idx)
let idx_start = 0;
let idx_end = 0;
let i = 0;
let to_render;
do {
    if (idx_end < idx[i][0]) {
      to_render += MATCHING_STRING.slice(idx_end, idx[i][0]);
    }
    idx_start = idx[i][0];
    idx_end = idx[i][1];
    let highlight;
    if (idx[i][2] === '1') {
      highlight = 'SOME_CLASSNAME';
    }
    to_render += <b className={highlight}>{MATCHING_STRING.slice(idx_start, idx_end)}</b>;
    i ++;
}
while (i < idx.length);

Но это не работает. Кажется, что responsejs не позволяет мне писать этот блок в коде. Всегда есть некоторая синтаксическая ошибка при использовании <. Я предполагаю, что добавлю вещи таким образом в to_render. Как мне это решить? Это даже лучший способ нарезать строки?

И не уверен, что это имеет значение, MATCHING_STRING и GIVEN_ARRAY находятся в структуре, давайте назовем это TXN, и текущий код использует TXN.map((tr, ix) -> (.......) для сопоставления. Я попытался изменить его на скобки, чтобы это была функция js, но это тоже не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...