从arr中挑选出来需要保存的(arr.length - count)所有可能的组合,然后再从原数组中挑选出来所有可能的(count)补充组合,然后拼在一起去重就行了。

(async ()=>{

let vari = ['A','T','C','G'];

function change(arr, count = 1){

arr = arr.map(a=>vari.indexOf(a)).sort(); // convert to int array, for easier sorting in future

var prefix = combination(arr, arr.length - count);

var suffix = combination([0,1,2,3], count);

var res = prefix.length === 0 ? suffix : prefix.map(p=>suffix.map(s=>[...p, ...s])).reduce((a,b)=>[...a,...b], []);

var existing = arr.join(",");

res = res

.filter(r=>new Set(r).size === r.length) // filter out ones with duplicated items, like ["A","A","C"]

.map(r=>r.sort()) // order items, so ["C","A"] becomes ["A", "c"]

.sort() // sort, just make it looks prettier

.reduce((a,b)=>{ // remove duplicated combinations, keep only one

if(a[b.join(",")] === void 0){

a.arr.push(b);

a[b.join(",")] = 0;

}

return a;

}, {arr: []}).arr

.filter(r=>r.join(",") !== existing);

return res.map(r=>r.map((i)=>vari[i]));// convert back to letters

}

function combination(src, pick){

if(pick > src.length){

return [];

}

if(pick === 1){

return src.map(s=>[s]);

}

var res = [];

for(var i=0;i

for(var r of combination(src.slice(i+1), pick - 1)){

res.push([src[i], ...r]);

}

}

return res;

}

console.log(change(["G","A","C"], 2));

})();

output [A,T,C],[A,T,G],[T,C,G]

Php循环函数嵌套javascript,JS循环嵌套问题?相关推荐

  1. vue.js根据数据循环生成表格_vue.js循环for(列表渲染)详解

    vue.js循环for(列表渲染)详解 一.总结 一句话总结: v-for {{ item.message }} var example1 = new Vue({ el: '#example-1', ...

  2. html js 循环取json数据,JS循环遍历JSON数据的方法

    JS循环遍历JSON数据 本文提供了 JS 循环 JSON 数据列,以及 JS 循环遍历 JSON 数据的例子,供大家学习参考. 1. json数据的列循环 var len = json.length ...

  3. c语言do循环函数,C语言do-while循环

    本篇文章帮大家学习c语言do-while循环,包含了C语言do-while循环使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以用来参考. 要执行程序或代码的一部分几次或多次,我们可以 ...

  4. js循环绑定事件问题及解决方法

    js初学者经常遇到的循环绑定事件问题 js循环绑定事件 在编写JS代码的时候,我们经常会遇到要对一系列元素进行事件绑定的情况,然后就会理所当然的开一个for循环,对元素的事件进行赋值等操作,最后运行的 ...

  5. html中写嵌套的js函数,Javascript 嵌套函数 - 递归函数 - 内置函数详解

    在了解了函数的定义和函数调用外,下面我们来介绍一下JavaScript中几种特殊的函数. JavaScript特殊函数有3种: (1)嵌套函数: (2)递归函数: (3)内置函数: 下面详细给大家讲解 ...

  6. 在html中写for循环表格trtd,嵌套的HTML表格在javascript for循环

    我想在第一列创建一个表格,并在for循环中包含第一列中的文本和重复的HTML表格(id'questable').我不知道如何将重复的HTML表格与文档HTML的其余部分分离.当在第二个createTe ...

  7. js循环动态绑定带参数函数遇到的问题及解决方案[转]

    今天写原生javascript时,想利用绑定事件实现类似jquery中on方法的功能:于是有了for循环里绑定事件,无意中发现定义类能解决好多问题! 例如:一个不确定长度的列表,在鼠标经过某一条的时候 ...

  8. python笔记5 - 字符串格式化表达式,while语句嵌套,for循环,break,continue,死循环

    2017/9/29 字符串格式化表达式,while语句嵌套,for循环,break,continue,死循环 ============================================= ...

  9. scala条件替换_scala - 有没有办法用scala中的高阶方法替换嵌套的For循环 - SO中文参考 - www.soinside.com...

    有没有办法用scala中的高阶方法替换嵌套的For循环 问题描述 投票:0回答:1 我有一个mutableList,并希望获取所有行的总和,并根据某些条件将其行替换为其他值.下面的代码对我来说工作正常 ...

最新文章

  1. mybatis log4j打印sql
  2. JavaScript之Style属性学习
  3. CSS的px、em、rem、%、vw、vh、vm 单位区别
  4. 二维数组 赋值_3.9数组(数组基本使用、数组的循环、数组拷贝、数组排序、多维数组)...
  5. openssh登陆时提示服务器拒绝了密码
  6. poj1681 Painter's Problem高斯消元
  7. python模块学习之glob模块
  8. Java泛型用于方法,类和接口
  9. oracle用户编辑文件中文乱码
  10. 老spring3.2版本 redistemplate 报错_植物大战僵尸加强版本
  11. Java8新特性总结 - 序
  12. Python中一定要注意的那些“坑”(三)
  13. Android 代码动态生成ProgressBar
  14. 具有动态效果的响应式设计
  15. Linux电源驱动-Linux Cpuidle Framework
  16. 双极性根升余弦信号qpsk_基于CCSDS协议的中频信号源设计与实现
  17. struts+spring action应配置为scope=prototype
  18. disp语句怎么格式 matlab_matlab输出语句print
  19. Android系统源代码目录
  20. 内网网段范围_局域网网段到底是什么意思?怎么划分的啊?为什么要划分网段?...

热门文章

  1. 即时通讯的飞秋2010下载
  2. 【飞秋】网络的基础-域名篇
  3. 《极品飞车12》官方网站公布发售日
  4. 菜鸟也能搞定C++内存泄漏
  5. C++如何使用MySQL数据库
  6. 怎样才算得上合格的程序员,教你一招
  7. 一个月学会Python,零基础入门数据分析
  8. 第三节:快速编译TypeScript,提高开发效率
  9. 混口饭吃,谈不上喜欢
  10. pcb钻孔披锋改善报告_高速高频PCB技术 || 玻纤效应对高速信号的影响