2017-10-18 32 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