2016-01-04 82 views
0

第一個函數找到一個數的因子並且工作正常。找到數組的交集找到hcf

//first find divisors of a number 
 

 
function divisors(n) { 
 
    var result = []; 
 
    for (var i = 1; i <= n; i++) { 
 
     if ((n % i) == 0) { 
 
     result.push(i); 
 
     } 
 
    } 
 
    return result; 
 
    } 
 
    //the following gives problems 
 

 
function commonTerms(arr1, arr2) { 
 
    var arr1 = []; 
 
    arr2 = []; 
 
    common = []; 
 
    var m = Math.min(arr1.length, arr2.length); 
 
    for (var i = 0; i < arr1.length; i++) { 
 
    for (var j = 0; j < arr2.length; j++) { 
 
     if ((arr1(i)) == (arr2(j))) { 
 
     common.push(arr1(i)); 
 
     } else { 
 
     continue; 
 
     } 
 
    } 
 
    } 
 
    return common; 
 
} 
 

 
var x = parseInt(prompt("number to find divisors of?")); 
 
document.write(divisors(x)); 
 
var y = parseInt(prompt("number to find divisors of?")); 
 
document.write("<br>" + divisors(y)); 
 
alert(commonTerms(divisors(x), divisors(y)));
<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
    <link href="css/styles.css" rel="stylesheet"> 
 
</head> 
 

 
<body> 
 

 
    <h1>GCD</h1> 
 

 
    <p>This is my first website 
 
    <br>finding div</p> 
 
</body> 
 

 
</html>

它不會返回任何東西,第二個功能是一個給我的麻煩。我一直在看它一個小時。開始自己學習編程。 謝謝你的幫助。

+0

你爲什麼要重新定義'VAR ARR1 = []'內部函數'commonTerms' – Rajesh

+0

謝謝,我想這將刪除陣列輸入給 – Kepazino

回答

2

問題是,您正在訪問像這樣的數組項:arr(i)。 你應該用方括號做到這一點:

if ((arr1[i])==(arr2[j])){ 
     common.push(arr1[i]); 
     //... 
} 

而且你不需要一輪大括號的。另外你最好use strict comparison===而不是==)。

因此,這將是:

if (arr1[i] === arr2[j]){ 
     common.push(arr1[i]); 
     //... 
} 

BTW考慮檢查this question

+0

謝謝你什麼愚蠢的錯誤!我做檢查那個問題,雖然我很難理解其他人的編碼...... – Kepazino

2

首先,if ((arr1[i])==(arr2[j]))代替if ((arr1(i))==(arr2(j)))

其次,除去var arr1=[]; arr2 =[];因爲他們收到的參數,並留下var common=[]

我也會用m在循環中,因爲我猜那是你的意圖

+0

這是我的意圖,直到我意識到我不需要它:S – Kepazino

1

正如我已經評論,你重置參數,因此它不工作。檢查下面的代碼。

//first find divisors of a number 
 

 
function divisors(n) { 
 
    var result = []; 
 
    for (var i = 1; i <= n; i++) { 
 
     if ((n % i) == 0) { 
 
     result.push(i); 
 
     } 
 
    } 
 
    return result; 
 
    } 
 
    //the following gives problems 
 

 
function commonTerms(arr1, arr2) { 
 
    common = []; 
 
    var m = Math.min(arr1.length, arr2.length); 
 
    for (var i = 0; i < arr1.length; i++) { 
 
    for (var j = 0; j < arr2.length; j++) { 
 
     if ((arr1(i)) == (arr2(j))) { 
 
     common.push(arr1(i)); 
 
     } else { 
 
     continue; 
 
     } 
 
    } 
 
    } 
 
    return common; 
 
} 
 

 
var x = parseInt(prompt("number to find divisors of?")); 
 
document.write(divisors(x)); 
 
var y = parseInt(prompt("number to find divisors of?")); 
 
document.write("<br>" + divisors(y)); 
 
alert(commonTerms(divisors(x), divisors(y)));
<!DOCTYPE html> 
 
<html> 
 

 
<head> 
 
    <link href="css/styles.css" rel="stylesheet"> 
 
</head> 
 

 
<body> 
 

 
    <h1>GCD</h1> 
 

 
    <p>This is my first website 
 
    <br>finding div</p> 
 
</body> 
 

 
</html>

+0

謝謝我也沒有使用方括號與數組 – Kepazino

+0

是的!看@亞歷山大M.答案。 – Rajesh