我在python中有以下递归/循环:
''.join([x+y for x,y in zip(s[1::2], s[0::2])])
在 s
上交换nibbles。
我试图在nodejs中尽可能简单地复制它,但在nodejs中是新的。递归循环构建和邮政编码使它变得困难。
所有帮助都将受到赞赏。
这个样本怎么样?请将其视为几个答案之一。
s.filter((e,i)=>{return i%2==1}).map((e,i)=>{return e+s.filter((e,i)=>{return i%2==0})[i]}).join('');
当每个部分分开时,可以写如下。
var even = s.filter((e,i)=>{return i%2==1});
var odd = s.filter((e,i)=>{return i%2==0});
var zip = even.map((e,i)=>{return e+odd[i]});
var result = zip.join('');
console.log(result);
- 在此示例脚本中,数组的每个循环均由
filter()
和map()
表示。 -
s.filter((e,i)=>{return i%2==1})
以均匀数字检索元素。- 您的脚本的
s[1::2]
可以用此表示。
- 您的脚本的
-
s.filter((e,i)=>{return i%2==0})
以奇数来检索元素。- 您的脚本的
s[0::2]
可以用此表示。
- 您的脚本的
- 您的脚本的
zip()
可以用even.map((e,i)=>{return e+odd[i]})
表示。-
e+odd[i]
表示您脚本的x+y
。
-
-
zip.join('')
表示您脚本的''.join(
。
参考:
- filter()
- map()
- join()
演示
- Python Demo
- JavaScript Demo
如果我误解了您的问题,对不起。