将带逗号的字符串转换为带逗号的数组(甚至只是带逗号的数字)

时间:2019-06-11 21:22:52

标签: javascript max-msp-jitter maxmsp

我在MaxMSP内使用JS

我想获取一个字符串输出(以逗号分隔的斐波那契数字分隔),然后将其转换为数组或数字,保留空格和逗号,但使用“双引号”

我在这里尝试了很多东西,但不幸的是,我仍在撞墙。

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,

2 个答案:

答案 0 :(得分:0)

var result = '"6, 1, 0,"'.replace(/['"]+/g, '')
console.info(result);

答案 1 :(得分:0)

您似乎希望outlet(1)输出一个最大的“列表”而不是一个符号。 outlet将为您处理该问题,但是您需要将其交给一个数组来实现。 in the docs如下:

如果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) });