我有一个名为's'的数组现在我需要从这个数组中打印出来 'len'的组合/选项现在我有了这个代码,但我不能打印所有 选项,我不知道最终我需要什么,将打印像ABC,BCD,CDE,ABD,BDE等......
<html>
<head>
<title>Page Title</title>
<script src="https://code.jquery.com/jquery-3.1.1.js"></script>
</head>
<body>
<p id="result"></p>
<script type="text/javascript">
var s = ["A", "B", "C", "D", "E"];
var len = 2
for (var i = 0; i < s.length - len + 1; i++) {
document.getElementById("result").innerHTML = document.getElementById("result").innerHTML + s.slice(i, i + len) + "<br/>";
}
</script>
</body>
</html>
答案 0 :(得分:1)
您可以迭代所有元素的树,其中您使用元素进入一个方向,而另一个方向没有实际元素。继续进行,直到临时数组具有所需的长度或者到达数组的最后一个元素。
只返回三个元素。
基本上你需要一个递归函数来检查离开函数。
在这种情况下,有两个
如果临时数组的长度与所需长度匹配,则将temp添加到结果中;
如果index等于带项目的数组的长度;
然后退出该函数并停止递归。
主要部分是开始一个新的递归,一个索引元素,一个没有。
function getCombinations(array, length) {
function fork(i, t) { // recursive fn with index & temp array
if (t.length === length) { // check temp length
result.push(t); // push collected values
return; // exit function
}
if (i === array.length) { // check if index is out of range
return; // exit function
}
fork(i + 1, t.concat([array[i]])); // call for with a new letter from index
fork(i + 1, t); // call for without a new letter
}
var result = []; // for keeping the part results
fork(0, []); // start with index zero and empty temp array
return result; // return result
}
var names = ['anne', 'bert', 'cara', 'dirk', 'eva'],
result = getCombinations(names, 3);
document.getElementById('out').innerHTML = JSON.stringify(result, 0, 4);
<pre id="out"></pre>
答案 1 :(得分:0)
<p id="demo"></p>
HTML
{{1}}