JavaScript 有没有现成的穷举函数呢?

2016-07-04 09:32:29 +08:00
 isbase
提供需要穷举的内容之后输出所有结果
3031 次点击
所在节点    JavaScript
15 条回复
just4test
2016-07-04 09:49:08 +08:00
没用过 js ,不过貌似 array 有 map 方法?
没太明白你想干什么。
isbase
2016-07-04 10:07:06 +08:00
@just4test
比如 输入 26 个字母 10 个数字 输出这些字母和数字的所有组合
learnshare
2016-07-04 10:09:36 +08:00
@isbase 自己写咯
ljbha007
2016-07-04 10:15:43 +08:00
1,2,3,4].forEach(function(i){console.log(i)})
ljbha007
2016-07-04 10:15:52 +08:00
[1,2,3,4].forEach(function(i){console.log(i)})
ljbha007
2016-07-04 10:16:44 +08:00
用 underscore 也可以

_.map([1,2,3,4], function(i){console.log(i)})
bramblex
2016-07-04 10:25:20 +08:00
就一行代码的事而已,哪里那么复杂……
var a = [1,2,3,4];
var b = ['a','b','c','d'];
var c = a.map((a_i) => b.map((b_i) => ([a_i, b_i]))).reduce((l, r) => r.concat(l));
Perry
2016-07-04 10:30:45 +08:00
@isbase 你所说的组合是任意长度的吗?还是 36 ?
bramblex
2016-07-04 10:38:53 +08:00
javaScript 不提供 concatMap 真蛋疼……
IanPeverell
2016-07-04 10:46:13 +08:00
ES6 还有 Map, WeakMap, Iterator, for...of...
lonelinsky
2016-07-04 10:59:23 +08:00
@isbase lz 要的是全排列函数还是只是要输出 1a , 2a...1b, 2b 这样的东西?
如果是全排列,原生 js 应该是没有这样的排列函数的,不过网上算法很多,另外提个建议,算法写出来后不要企图将结果写入一个文件(针对 26 字母+10 数字)…

如果是后面的,随便写个 for 循环就好了吧 =。=
Mutoo
2016-07-04 11:26:44 +08:00
楼主需要的是排列组合的库 js-combinatorics
https://github.com/dankogai/js-combinatorics
SourceMan
2016-07-04 11:27:38 +08:00
别人封装好的库算不算现成的?
noe132
2016-07-04 16:26:10 +08:00
Array 有 reduce 方法啊
mingyun
2016-07-04 23:35:13 +08:00
@Mutoo

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/290072

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX