Javascript 如何有效地建立这个字符串?

Javascript 如何有效地建立这个字符串?,javascript,node.js,Javascript,Node.js,我有一个可以被4整除的数字,例如20。现在我需要创建一个如下所示的字符串: (1, 2, 3, 4), (5, 6, 7, 8), (9, 10, 11, 12), (13, 14, 15, 16), (17, 18, 19, 20) 所以,从1到20的所有数字,以4为一组,用括号括起来,用逗号分隔 我目前的做法如下: const placeholders = []; for (let i = 0; i < events.length; i++) { const base = i

我有一个可以被4整除的数字,例如20。现在我需要创建一个如下所示的字符串:

(1, 2, 3, 4), (5, 6, 7, 8), (9, 10, 11, 12), (13, 14, 15, 16), (17, 18, 19, 20)
所以,从1到20的所有数字,以4为一组,用括号括起来,用逗号分隔

我目前的做法如下:

const placeholders = [];

for (let i = 0; i < events.length; i++) {
  const base = i * 4 + 1;

  placeholders.push(`(${base}, ${base + 1}, ${base + 2}, ${base + 3})`);
}

const result = placeholders.join(',');
const占位符=[];
for(设i=0;i
有没有办法做到这一点a)效率更高,b)可读性更强?

var results=[];
var results = [];
for(var i = 1; i <= events.length * 4; i++){
  var m = i % 4;
  results.push((m==1 ? "(" : "") + i + (m==0 ? ")" : ""));
}
results = results.join(", ");
对于(VarI=1;i
VarResults=[];

对于(var i=1;i刚刚尝试过。不知道是否有效

res = '(';
for (i = 1; i <= 20; i++) {
    var mod = i % 4;
    (mod == 1 && i != 1) ? res += ',(' : '';
    res += i;
    res += (mod != 0) ? ',' : ')';
}
res='(';

对于(i=1;i刚刚尝试过。不知道是否有效

res = '(';
for (i = 1; i <= 20; i++) {
    var mod = i % 4;
    (mod == 1 && i != 1) ? res += ',(' : '';
    res += i;
    res += (mod != 0) ? ',' : ')';
}
res='(';

对于(i=1;i IMHO this bound on.IMHO this bound on.+1,用于计算
)的智能方法
与三元运算符的串联。我删除了我的答案,因为你的答案更好。不过,如果你将
4
作为生成此字符串的函数的参数,那就太酷了-我意识到这不是OP问题的要求:)还有,为什么不试试这个:;)@RobinMackenzie我会同意的,但这个答案比我做得更好。呃,你的条件预加/附加括号是一种非常不同的方法,因此可能确实有好处。例如,数组变大,元素变小,因此字符串缓冲区可能会更快。@Bergi发现它可能是一个E我的代码中有错误。两者都使用
事件.长度
,但我假设它是
20
,而实际上它是
5
。这个错误意味着在测试OP的代码时会重复四次。+1是计算
的明智方法(
与三元运算符的串联。我删除了我的答案,因为你的答案更好。不过,如果你将
4
作为生成此字符串的函数的参数,那就太酷了-我意识到这不是OP问题的要求:)还有,为什么不试试这个:;)@RobinMackenzie我会同意的,但这个答案比我做得更好。呃,你的条件预加/附加括号是一种非常不同的方法,因此可能确实有好处。例如,数组变大,元素变小,因此字符串缓冲区可能会更快。@Bergi发现它可能是一个E我的代码中有错误。两者都使用
事件.length
,但我假设它是
20
,而实际上是
5
。这个错误意味着在测试OP的代码时,会重复四倍。