Преобразование строки с запятыми в массив с запятыми (или даже просто число с запятыми

Я использую 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) });
Другие вопросы по тегам