Преобразование строки с запятыми в массив с запятыми (или даже просто число с запятыми
Я использую JS внутри MaxMSP
Я хотел бы взять строковый вывод (разделенный запятыми одиночными числами Фибоначчи) и преобразовать его в массив или число, сохраняя пробел и запятые, но получая "двойные кавычки"
Я попробовал кучу вещей здесь, но, к сожалению, я все еще бьюсь головой о стену.
autowatch = 1;
inlets = 2;
outlets = 2;
function msg_int(num){
var a = 1;
var b = 0, temp;
while (num >= 0){
temp = a;
a = a + b;
b = temp;
num--;
outlet(0, b);
var n = temp;
digits = n.toString().replace(/(\d{1})/g,'$1, ')
outlet(1, digits);
}
return b;
}
Входной номер 14 Первый номер розетки (0) - 610 Второй выход (1) - "6, 1, 0".
Я хотел бы, чтобы второй выход был 6, 1, 0,
1 ответ
var result = '"6, 1, 0,"'.replace(/['"]+/g, '')
console.info(result);
Похоже, ты хочешь outlet(1)
для вывода "списка" Max, а не символа. outlet
сделает это за вас, но для этого вам нужно передать ему массив. Вот что написано в документации:
Если аргумент для выхода является массивом, он разворачивается (только до одного уровня) и передается как сообщение или список Max (в зависимости от того, является ли первый элемент массива числом или строкой).
Зная это, нужно преобразовать digits
в массив перед передачей в outlet
:
var n = temp;
var digits = n.toString(); // convert 610 to "610" (for example)
digits.split(""); // split "610" into ["6", "1", "0"]
outlet(1, digits);
Независимо от того, является ли этот список Max или сообщение, зависит от типа первого элемента, поэтому, если вам нужен список чисел (целые числа в вашем случае), вы можете сделать что-то вроде этого, прежде чем передавать его в розетку:
// map ["6", "1", "0"] to [6, 1, 0]
digits = digits.map(function (i) { return parseInt(i) });