Я использую функцию javascript join() для преобразования массива символов в строку, одновременно удаляя разделители запятых между символами.
В большинстве случаев это работает именно так, как ожидалось, но я только что обнаружил, что это не работает, если в массиве есть символ меньше (‹).
Например:
var chararray = ["A", "B", "C", "D", "E"];
var string = chararray.join("");
console.log(string);
выводит строку ABCDE
но в этом примере это НЕ работает, как ожидалось
var chararray = ["A", "B", "C", "<", "E"];
var string = chararray.join("");
console.log(string);
создает строку ABC (она останавливается, когда достигает символа ‹)
Если я использую join() - оставляя разделители запятыми - это работает
var chararray = ["A", "B", "C", "<", "E"];
var string = chararray.join();
console.log(string);
производит строку A,B,C,‹,E
но если я затем попытаюсь удалить запятые, используя string.replace(/./g,), я снова получу тот же результат - ABC
var chararray = ["A", "B", "C", "<", "E"];
var string = chararray.join();
var outputstring = string.replace(/,/g, "");
console.log(outputstring);
Создает строку ABC — снова останавливаясь на символе ‹.
Насколько я знаю, ‹ не является специальным символом в javascript (если только он не используется в математическом уравнении/сравнительном уравнении) - так почему он это делает? Он не делает этого с любыми другими символами, включая ›, = и т. д.