//函数式编程思维分析 这个排列函数
const anagrams = str => {
if (str.length <= 2) return str.length === 2 ? [str, str[1] + str[0]] : [str];
return str.split('').reduce((acc, letter, i) =>
acc.concat(anagrams(str.slice(0, i) + str.slice(i + 1)).map(val => letter + val)), []);
}; const result = anagrams('abc');
console.log(result);//['abc','acb','bac','bca','cab','cba']; //函数式编程基本思维:
//在函数式编程中,可以应用数学上的分配律和结合律,递归最好的理解方式
//这里用了分配率和结合律
//reduce(遍历+迭代)
//递归(组合分配律和结合律式子)
//map(运算分配律式子:展开式子) //以'abcd'为demo解析
//先用reduce 获得算子 'a' 'b' 'c' 'd'
//最终结果用[]来统计,或者叫记录吧
//递归: 'a'(...) 'b'(...) 'c'(...) 'd'(...) : 组合成分配律和结合律式子
//其中... ,这里以'a'(...) 为demo
//'a'(...)的...为'bcd'
//由递归再组合分配律和结合律式子 'a'('b'(...) + 'c'(...) + 'd'(...))
//由递归再组合分配律和结合律式子 'a'('b'('cd'+'dc') + 'c'('bd' + 'db') + 'd'('bc' + 'cb'));
//map用于运算分配律和结合律式子 'a'('bcd' + 'bdc' + 'cbd' + 'cdb' + 'dbc' + 'dcb');
//map用于运算分配律和结合律式子 'abcd' + 'abdc' + 'acbd' + 'acdb' + 'adbc' +'adcb';
//concat是+号
console.log(anagrams('abcd'));//['abcd','abdc','acbd','acdb','adbc','adcb',...余下的是'b'(...) 'c'(...) 'd'(...)的情况]

最新文章

  1. $(window).height(),在火狐下面获取的高度并不是可视区域的高度
  2. C++网络套接字编程TCP和UDP实例
  3. IOS开发基础知识--碎片14
  4. 以application/json 方式提交 然后用在php中读取原始数据流的方式获取 在json_encode
  5. HTML5 File详解
  6. C#、.Net代码精简优化(空操作符(??)、as、string.IsNullOrEmpty() 、 string.IsNullOrWhiteSpace()、string.Equals()、System.IO.Path 的用法)
  7. 使用Yeoman快速启动AngularJS项目开发
  8. VC----Class Style类风格和窗口风格
  9. java 调用微信截图工具
  10. mysql 触发器的使用(备忘)
  11. 在Chrome Console中加载jQuery
  12. Spring源码入门——AnnotationBeanNameGenerator解析
  13. 【POJ 3162】 Walking Race (树形DP-求树上最长路径问题,+单调队列)
  14. jquery之前后台交互
  15. linux运维基础__争取十月前研究的差不多
  16. MYSQL数据库学习八 触发器的操作
  17. MVC架构介绍-框架分层
  18. [LeetCode] questions conclusion_ Binary Search
  19. linux基础02-bash特性
  20. 关于class produre

热门文章

  1. euler证明
  2. IT兄弟连 JavaWeb教程 使用JSTL函数
  3. IT兄弟连 JavaWeb教程 JSP内置对象经典案例
  4. AVAudioPlayer 如何在页面呈现之后按需初始化
  5. react native 安卓打包--mac环境,如果打包不成功可注意下my-release-key.keystore的位置关系(绝对路径)
  6. Bootstrap里的文件作用
  7. [模板](luogu P3387)縮點
  8. php—Spl库常用数据结构基本用法
  9. iis日志存放位置 及 查看方法
  10. uvm_config_db——半个全局变量