Извините, 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, но это тоже не работает.