2017-10-18 38 views
-2

我想通过仅使用JavaScript来查找可能的组合n数字从一大组选定的数字。javascript匹配任何数字被选中

这是代码,我发现在互联网上,但一些代码丢失:

var nd = true; 

function no_dup(v) { 
    nd = !v; 
    genfunction(); 
} 

function genfunction() { 
    var x = document.getElementsByClassName("choice"); 
    var number_set = []; 
    var j = 0; 
    for (i = 0; i < x.length; i++) 
     if (x[i].checked) { 
      number_set[j++] = x[i].value; 
........ 
........ 
........  
// rest of the code is lost. 

这是网页是什么样子:

matching any number

+0

所以,你正在寻找给定数字的所有可能的组合,同时保持'规则XY = YX'? –

回答

0

你的代码几乎没做什么 - 看起来你失去了90%。

所以,做它从无到有,这里是我会怎么做:

function getCombinations(digits, size, prefix = []) { 
 
    if (!size) return [prefix]; 
 
    if (digits.length < size) return []; 
 
    return digits.reduce((acc, dig, i) => 
 
     acc.concat(getCombinations(digits.slice(i+1), size-1, prefix.concat([dig]))) 
 
    , []); 
 
} 
 

 
document.body.onchange = function() { 
 
    // Get input 
 
    var selectedDigits = Array.from(digits.options) 
 
           .filter(option => option.selected) 
 
           .map(option => +option.value); 
 
    var digitCount = +sizes.value; 
 
    // Produce combinations, and turn them into strings 
 
    var combinations = getCombinations(selectedDigits, digitCount) 
 
         .map(digits => digits.join('')); 
 
    // Output result 
 
    output.textContent = combinations.join(' '); 
 
}
select { display: inline-block } 
 
div { clear: left } 
 
.pad option { padding-left: 10px; padding-right: 20px }
Hold down Control key to click multiple digits (or drag):<br> 
 
<select id="digits" class="pad" multiple size="10"> 
 
    <option>0</option> 
 
    <option>1</option> 
 
    <option>2</option> 
 
    <option>3</option> 
 
    <option>4</option> 
 
    <option>5</option> 
 
    <option>6</option> 
 
    <option>7</option> 
 
    <option>8</option> 
 
    <option>9</option> 
 
</select> 
 
<select id="sizes" size="2"> 
 
    <option value=2 selected>2 digits</option> 
 
    <option value=3>3 digits</option> 
 
</select><br> 
 
Combinations: <span id="output"></span>

+0

谢谢你非常非常trincot你的帮助是非常有用的,但我想完整的代码包括可以显示像我这样的图像的https代码https://i.stack.imgur.com/nnYjZ.png让它完美的显示在用户手机屏幕上。只需用户点击触摸屏就可以轻松选择号码结合在我的国家赌博当地乐透。我希望你能理解我。 预先感谢您。永远爱你。 – newmb

+0

你现在要求的是太宽泛。您应该继续尝试自己制作用户界面,如果遇到*特殊*问题(例如对齐页面上的元素),请提出一个关于该问题的特定问题。请注意,downvote按钮显示“这个问题没有显示任何研究工作”,所以我现在好心地给你研究任务,并找出如何制作这样的用户界面;-)随时提出一个新的问题一个*特定*的问题,你在使它的工作。 – trincot