我在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,
答案 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) });